From 8a946b8ae83b92119d6b941011915bc81048ddcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 12:12:46 +0200 Subject: [PATCH 01/18] chore(deps): bump github/codeql-action from 3.26.6 to 3.26.7 (#1979) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.6 to 3.26.7. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4dd16135b69a43b6c8efb853346f8437d92d3c93...8214744c546c1e5c8f03dde8fab3a7353211988d) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 2f0b19c0b..9fda1cdef 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -40,7 +40,7 @@ jobs: exit-code: '0' vuln-type: os,library - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: sarif_file: trivy-results.sarif category: code \ No newline at end of file From 0cd5fa6113e665f3dc275e2ee64b43f4ec86980e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Mon, 16 Sep 2024 13:52:40 +0200 Subject: [PATCH 02/18] feat: remove v1alpha2 tests api for now (#1982) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: remove v1alpha2 tests api for now Signed-off-by: Charles-Edouard Brétéché * fix tests Signed-off-by: Charles-Edouard Brétéché --------- Signed-off-by: Charles-Edouard Brétéché --- .crds/chainsaw.kyverno.io_tests.yaml | 3992 ------ .schemas/json/test-chainsaw-v1alpha2.json | 11686 ---------------- pkg/apis/v1alpha2/action.go | 325 - pkg/apis/v1alpha2/operation.go | 115 - pkg/apis/v1alpha2/step.go | 71 - pkg/apis/v1alpha2/test.go | 96 - pkg/apis/v1alpha2/types.go | 23 - pkg/apis/v1alpha2/zz_generated.deepcopy.go | 1196 +- pkg/apis/v1alpha2/zz_generated.register.go | 1 - pkg/data/crds/chainsaw.kyverno.io_tests.yaml | 3992 ------ pkg/data/data_test.go | 1 - .../schemas/json/test-chainsaw-v1alpha2.json | 11686 ---------------- .../docs/reference/apis/chainsaw.v1alpha2.md | 685 - 13 files changed, 70 insertions(+), 33799 deletions(-) delete mode 100644 .schemas/json/test-chainsaw-v1alpha2.json delete mode 100644 pkg/apis/v1alpha2/action.go delete mode 100644 pkg/apis/v1alpha2/operation.go delete mode 100644 pkg/apis/v1alpha2/step.go delete mode 100644 pkg/apis/v1alpha2/test.go delete mode 100644 pkg/data/schemas/json/test-chainsaw-v1alpha2.json diff --git a/.crds/chainsaw.kyverno.io_tests.yaml b/.crds/chainsaw.kyverno.io_tests.yaml index a4e26f461..5055b3438 100644 --- a/.crds/chainsaw.kyverno.io_tests.yaml +++ b/.crds/chainsaw.kyverno.io_tests.yaml @@ -4663,3995 +4663,3 @@ spec: type: object served: true storage: true - - name: v1alpha2 - schema: - openAPIV3Schema: - description: Test is the resource that contains a test definition. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: Test spec. - properties: - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a binding in - an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cleanup: - default: {} - description: Cleanup contains cleanup configuration. - properties: - delayBeforeCleanup: - description: DelayBeforeCleanup adds a delay between the time - a test ends and the time cleanup starts. - type: string - skipDelete: - description: If set, do not delete the resources after running - a test. - type: boolean - type: object - cluster: - description: Cluster defines the target cluster (default cluster will - be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to support multi-cluster - tests. - type: object - deletion: - default: {} - description: Deletion contains the global deletion configuration. - properties: - propagation: - default: Background - description: |- - Propagation decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - enum: - - Orphan - - Background - - Foreground - type: string - type: object - description: - description: Description contains a description of the test. - type: string - error: - default: {} - description: Error contains the global error configuration. - properties: - catch: - description: |- - Catch defines what the tests steps will execute when an error happens. - This will be combined with catch handlers defined at the test and step levels. - items: - description: CatchFinally defines actions to be executed in - catch, finally and cleanup blocks. - oneOf: - - required: - - command - - required: - - delete - - required: - - describe - - required: - - events - - required: - - get - - required: - - podLogs - - required: - - script - - required: - - sleep - - required: - - wait - properties: - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - entrypoint: - description: Entrypoint is the command entry point to - run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from the - command. Useful for sensitive logs or to reduce noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - workDir: - description: WorkDir is the working directory for command. - type: string - required: - - entrypoint - type: object - delete: - description: Delete represents a deletion operation. - not: - required: - - file - - ref - properties: - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labels: - additionalProperties: - type: string - description: Label selector to match objects to - delete - type: object - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources should - be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe collector - to execute. - not: - required: - - name - - selector - properties: - apiVersion: - description: API version of the referent. - type: string - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the operation. - type: string - events: - description: Events determines the events collector to execute. - not: - required: - - name - - selector - properties: - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector to - execute. - not: - required: - - name - - selector - properties: - apiVersion: - description: API version of the referent. - type: string - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - podLogs: - description: PodLogs determines the pod logs collector to - execute. - not: - required: - - name - - selector - properties: - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from the - command. Useful for sensitive logs or to reduce noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - workDir: - description: WorkDir is the working directory for script. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - wait: - description: Wait determines the resource wait collector - to execute. - not: - required: - - name - - selector - properties: - apiVersion: - description: API version of the referent. - type: string - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition to - wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for waiting - on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path condition - to wait for. - properties: - path: - description: Path defines the json path to wait - for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - type: array - type: object - execution: - default: {} - description: Execution contains tests execution configuration. - properties: - concurrent: - default: true - description: Concurrent determines whether the test should run - concurrently with other tests. - type: boolean - skip: - description: Skip determines whether the test should skipped. - type: boolean - terminationGracePeriod: - description: TerminationGracePeriod forces the termination grace - period on pods, statefulsets, daemonsets and deployments. - type: string - type: object - namespace: - default: {} - description: Namespace contains properties for the namespace to use - for tests. - properties: - name: - description: |- - Name defines the namespace to use for tests. - If not specified, every test will execute in a random ephemeral namespace - unless the namespace is overridden in a the test spec. - type: string - template: - description: Template defines a template to create the test namespace. - type: object - x-kubernetes-preserve-unknown-fields: true - type: object - steps: - description: Steps defining the test. - items: - description: TestStep contains the test step definition used in - a test spec. - properties: - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a binding - in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - catch: - description: Catch defines what the step will execute when an - error happens. - items: - description: Operation defines operation elements. - properties: - apply: - description: |- - Apply represents resources that should be applied for this test step. This can include things - like configuration settings or any other resources that need to be available during the test. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - assert: - description: Assert represents an assertion to be made. - It checks whether the conditions specified in the assertion - hold true. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a - binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (default - cluster will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - entrypoint: - description: Entrypoint is the command entry point - to run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - entrypoint - type: object - create: - description: Create represents a creation operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - delete: - description: Delete represents a deletion operation. - properties: - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labelSelector: - description: Label selector to match objects to - delete - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe - collector to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the - operation. - type: string - error: - description: |- - Error represents the expected errors for this test step. If any of these errors occur, the test - will consider them as expected; otherwise, they will be treated as test failures. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - events: - description: Events determines the events collector to - execute. - properties: - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - patch: - description: Patch represents a patch operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - podLogs: - description: PodLogs determines the pod logs collector - to execute. - properties: - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - update: - description: Update represents an update operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - wait: - description: Wait determines the resource wait collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition - to wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for - waiting on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path - condition to wait for. - properties: - path: - description: Path defines the json path to - wait for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - - value - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - type: array - cleanup: - description: Cleanup defines what will be executed after the - test is terminated. - items: - description: Operation defines operation elements. - properties: - apply: - description: |- - Apply represents resources that should be applied for this test step. This can include things - like configuration settings or any other resources that need to be available during the test. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - assert: - description: Assert represents an assertion to be made. - It checks whether the conditions specified in the assertion - hold true. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a - binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (default - cluster will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - entrypoint: - description: Entrypoint is the command entry point - to run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - entrypoint - type: object - create: - description: Create represents a creation operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - delete: - description: Delete represents a deletion operation. - properties: - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labelSelector: - description: Label selector to match objects to - delete - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe - collector to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the - operation. - type: string - error: - description: |- - Error represents the expected errors for this test step. If any of these errors occur, the test - will consider them as expected; otherwise, they will be treated as test failures. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - events: - description: Events determines the events collector to - execute. - properties: - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - patch: - description: Patch represents a patch operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - podLogs: - description: PodLogs determines the pod logs collector - to execute. - properties: - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - update: - description: Update represents an update operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - wait: - description: Wait determines the resource wait collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition - to wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for - waiting on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path - condition to wait for. - properties: - path: - description: Path defines the json path to - wait for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - - value - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - type: array - cluster: - description: Cluster defines the target cluster (default cluster - will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to support - multi-cluster tests. - type: object - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in both the Configuration and the Test. - enum: - - Orphan - - Background - - Foreground - type: string - description: - description: Description contains a description of the test - step. - type: string - finally: - description: Finally defines what the step will execute after - the step is terminated. - items: - description: Operation defines operation elements. - properties: - apply: - description: |- - Apply represents resources that should be applied for this test step. This can include things - like configuration settings or any other resources that need to be available during the test. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - assert: - description: Assert represents an assertion to be made. - It checks whether the conditions specified in the assertion - hold true. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a - binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (default - cluster will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - entrypoint: - description: Entrypoint is the command entry point - to run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - entrypoint - type: object - create: - description: Create represents a creation operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - delete: - description: Delete represents a deletion operation. - properties: - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labelSelector: - description: Label selector to match objects to - delete - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe - collector to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the - operation. - type: string - error: - description: |- - Error represents the expected errors for this test step. If any of these errors occur, the test - will consider them as expected; otherwise, they will be treated as test failures. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - events: - description: Events determines the events collector to - execute. - properties: - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - patch: - description: Patch represents a patch operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - podLogs: - description: PodLogs determines the pod logs collector - to execute. - properties: - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - update: - description: Update represents an update operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - wait: - description: Wait determines the resource wait collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition - to wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for - waiting on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path - condition to wait for. - properties: - path: - description: Path defines the json path to - wait for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - - value - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - type: array - name: - description: Name of the step. - type: string - skipDelete: - description: SkipDelete determines whether the resources created - by the step should be deleted after the test step is executed. - type: boolean - template: - description: Template determines whether resources should be - considered for templating. - type: boolean - timeouts: - description: Timeouts for the test step. Overrides the global - timeouts set in the Configuration and the timeouts eventually - set in the Test. - properties: - apply: - description: Apply defines the timeout for the apply operation - type: string - assert: - description: Assert defines the timeout for the assert operation - type: string - cleanup: - description: Cleanup defines the timeout for the cleanup - operation - type: string - delete: - description: Delete defines the timeout for the delete operation - type: string - error: - description: Error defines the timeout for the error operation - type: string - exec: - description: Exec defines the timeout for exec operations - type: string - type: object - try: - description: Try defines what the step will try to execute. - items: - description: TryOperation defines operation elements. - properties: - apply: - description: |- - Apply represents resources that should be applied for this test step. This can include things - like configuration settings or any other resources that need to be available during the test. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - assert: - description: Assert represents an assertion to be made. - It checks whether the conditions specified in the assertion - hold true. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a - binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (default - cluster will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - entrypoint: - description: Entrypoint is the command entry point - to run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - entrypoint - type: object - continueOnError: - description: |- - ContinueOnError determines whether a test should continue or not in case the operation was not successful. - Even if the test continues executing, it will still be reported as failed. - type: boolean - create: - description: Create represents a creation operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - delete: - description: Delete represents a deletion operation. - properties: - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labelSelector: - description: Label selector to match objects to - delete - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe - collector to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the - operation. - type: string - error: - description: |- - Error represents the expected errors for this test step. If any of these errors occur, the test - will consider them as expected; otherwise, they will be treated as test failures. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - events: - description: Events determines the events collector to - execute. - properties: - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - patch: - description: Patch represents a patch operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - podLogs: - description: PodLogs determines the pod logs collector - to execute. - properties: - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - update: - description: Update represents an update operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - wait: - description: Wait determines the resource wait collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition - to wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for - waiting on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path - condition to wait for. - properties: - path: - description: Path defines the json path to - wait for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - - value - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - minItems: 1 - type: array - required: - - try - type: object - type: array - templating: - default: {} - description: Templating contains the templating config. - properties: - enabled: - default: true - description: Enabled determines whether resources should be considered - for templating. - type: boolean - type: object - timeouts: - default: {} - description: Timeouts for the test. Overrides the global timeouts - set in the Configuration on a per operation basis. - properties: - apply: - description: Apply defines the timeout for the apply operation - type: string - assert: - description: Assert defines the timeout for the assert operation - type: string - cleanup: - description: Cleanup defines the timeout for the cleanup operation - type: string - delete: - description: Delete defines the timeout for the delete operation - type: string - error: - description: Error defines the timeout for the error operation - type: string - exec: - description: Exec defines the timeout for exec operations - type: string - type: object - required: - - steps - type: object - required: - - spec - type: object - served: true - storage: false diff --git a/.schemas/json/test-chainsaw-v1alpha2.json b/.schemas/json/test-chainsaw-v1alpha2.json deleted file mode 100644 index 0e3ea9ea0..000000000 --- a/.schemas/json/test-chainsaw-v1alpha2.json +++ /dev/null @@ -1,11686 +0,0 @@ -{ - "description": "Test is the resource that contains a test definition.", - "type": "object", - "required": [ - "spec" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": [ - "string", - "null" - ], - "enum": [ - "chainsaw.kyverno.io/v1alpha2" - ] - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": [ - "string", - "null" - ], - "enum": [ - "Test" - ] - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - }, - "spec": { - "description": "Test spec.", - "type": [ - "object", - "null" - ], - "required": [ - "steps" - ], - "properties": { - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cleanup": { - "description": "Cleanup contains cleanup configuration.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "delayBeforeCleanup": { - "description": "DelayBeforeCleanup adds a delay between the time a test ends and the time cleanup starts.", - "type": [ - "string", - "null" - ] - }, - "skipDelete": { - "description": "If set, do not delete the resources after running a test.", - "type": [ - "boolean", - "null" - ] - } - }, - "additionalProperties": false - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "deletion": { - "description": "Deletion contains the global deletion configuration.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "propagation": { - "description": "Propagation decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.", - "type": [ - "string", - "null" - ], - "default": "Background", - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the test.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error contains the global error configuration.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "catch": { - "description": "Catch defines what the tests steps will execute when an error happens.\nThis will be combined with catch handlers defined at the test and step levels.", - "type": [ - "array", - "null" - ], - "items": { - "description": "CatchFinally defines actions to be executed in catch, finally and cleanup blocks.", - "type": [ - "object", - "null" - ], - "oneOf": [ - { - "required": [ - "command" - ] - }, - { - "required": [ - "delete" - ] - }, - { - "required": [ - "describe" - ] - }, - { - "required": [ - "events" - ] - }, - { - "required": [ - "get" - ] - }, - { - "required": [ - "podLogs" - ] - }, - { - "required": [ - "script" - ] - }, - { - "required": [ - "sleep" - ] - }, - { - "required": [ - "wait" - ] - } - ], - "properties": { - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - }, - "workDir": { - "description": "WorkDir is the working directory for command.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "not": { - "required": [ - "file", - "ref" - ] - }, - "properties": { - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labels": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - }, - "workDir": { - "description": "WorkDir is the working directory for script.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "execution": { - "description": "Execution contains tests execution configuration.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "concurrent": { - "description": "Concurrent determines whether the test should run concurrently with other tests.", - "type": [ - "boolean", - "null" - ], - "default": true - }, - "skip": { - "description": "Skip determines whether the test should skipped.", - "type": [ - "boolean", - "null" - ] - }, - "terminationGracePeriod": { - "description": "TerminationGracePeriod forces the termination grace period on pods, statefulsets, daemonsets and deployments.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "namespace": { - "description": "Namespace contains properties for the namespace to use for tests.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "name": { - "description": "Name defines the namespace to use for tests.\nIf not specified, every test will execute in a random ephemeral namespace\nunless the namespace is overridden in a the test spec.", - "type": [ - "string", - "null" - ] - }, - "template": { - "description": "Template defines a template to create the test namespace.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - }, - "steps": { - "description": "Steps defining the test.", - "type": "array", - "items": { - "description": "TestStep contains the test step definition used in a test spec.", - "type": [ - "object", - "null" - ], - "required": [ - "try" - ], - "properties": { - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "catch": { - "description": "Catch defines what the step will execute when an error happens.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Operation defines operation elements.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply represents resources that should be applied for this test step. This can include things\nlike configuration settings or any other resources that need to be available during the test.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "assert": { - "description": "Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "create": { - "description": "Create represents a creation operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "properties": { - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labelSelector": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": [ - "array", - "null" - ], - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", - "type": [ - "object", - "null" - ], - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - }, - "x-kubernetes-list-type": "atomic" - } - }, - "additionalProperties": false - }, - "x-kubernetes-list-type": "atomic" - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error represents the expected errors for this test step. If any of these errors occur, the test\nwill consider them as expected; otherwise, they will be treated as test failures.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "patch": { - "description": "Patch represents a patch operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "update": { - "description": "Update represents an update operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path", - "value" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "cleanup": { - "description": "Cleanup defines what will be executed after the test is terminated.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Operation defines operation elements.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply represents resources that should be applied for this test step. This can include things\nlike configuration settings or any other resources that need to be available during the test.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "assert": { - "description": "Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "create": { - "description": "Create represents a creation operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "properties": { - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labelSelector": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": [ - "array", - "null" - ], - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", - "type": [ - "object", - "null" - ], - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - }, - "x-kubernetes-list-type": "atomic" - } - }, - "additionalProperties": false - }, - "x-kubernetes-list-type": "atomic" - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error represents the expected errors for this test step. If any of these errors occur, the test\nwill consider them as expected; otherwise, they will be treated as test failures.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "patch": { - "description": "Patch represents a patch operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "update": { - "description": "Update represents an update operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path", - "value" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in both the Configuration and the Test.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "description": { - "description": "Description contains a description of the test step.", - "type": [ - "string", - "null" - ] - }, - "finally": { - "description": "Finally defines what the step will execute after the step is terminated.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Operation defines operation elements.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply represents resources that should be applied for this test step. This can include things\nlike configuration settings or any other resources that need to be available during the test.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "assert": { - "description": "Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "create": { - "description": "Create represents a creation operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "properties": { - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labelSelector": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": [ - "array", - "null" - ], - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", - "type": [ - "object", - "null" - ], - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - }, - "x-kubernetes-list-type": "atomic" - } - }, - "additionalProperties": false - }, - "x-kubernetes-list-type": "atomic" - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error represents the expected errors for this test step. If any of these errors occur, the test\nwill consider them as expected; otherwise, they will be treated as test failures.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "patch": { - "description": "Patch represents a patch operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "update": { - "description": "Update represents an update operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path", - "value" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "name": { - "description": "Name of the step.", - "type": [ - "string", - "null" - ] - }, - "skipDelete": { - "description": "SkipDelete determines whether the resources created by the step should be deleted after the test step is executed.", - "type": [ - "boolean", - "null" - ] - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeouts": { - "description": "Timeouts for the test step. Overrides the global timeouts set in the Configuration and the timeouts eventually set in the Test.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply defines the timeout for the apply operation", - "type": [ - "string", - "null" - ] - }, - "assert": { - "description": "Assert defines the timeout for the assert operation", - "type": [ - "string", - "null" - ] - }, - "cleanup": { - "description": "Cleanup defines the timeout for the cleanup operation", - "type": [ - "string", - "null" - ] - }, - "delete": { - "description": "Delete defines the timeout for the delete operation", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error defines the timeout for the error operation", - "type": [ - "string", - "null" - ] - }, - "exec": { - "description": "Exec defines the timeout for exec operations", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "try": { - "description": "Try defines what the step will try to execute.", - "type": "array", - "minItems": 1, - "items": { - "description": "TryOperation defines operation elements.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply represents resources that should be applied for this test step. This can include things\nlike configuration settings or any other resources that need to be available during the test.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "assert": { - "description": "Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "continueOnError": { - "description": "ContinueOnError determines whether a test should continue or not in case the operation was not successful.\nEven if the test continues executing, it will still be reported as failed.", - "type": [ - "boolean", - "null" - ] - }, - "create": { - "description": "Create represents a creation operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "properties": { - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labelSelector": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": [ - "array", - "null" - ], - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", - "type": [ - "object", - "null" - ], - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - }, - "x-kubernetes-list-type": "atomic" - } - }, - "additionalProperties": false - }, - "x-kubernetes-list-type": "atomic" - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error represents the expected errors for this test step. If any of these errors occur, the test\nwill consider them as expected; otherwise, they will be treated as test failures.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "patch": { - "description": "Patch represents a patch operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "update": { - "description": "Update represents an update operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path", - "value" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - } - }, - "templating": { - "description": "Templating contains the templating config.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "enabled": { - "description": "Enabled determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ], - "default": true - } - }, - "additionalProperties": false - }, - "timeouts": { - "description": "Timeouts for the test. Overrides the global timeouts set in the Configuration on a per operation basis.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "apply": { - "description": "Apply defines the timeout for the apply operation", - "type": [ - "string", - "null" - ] - }, - "assert": { - "description": "Assert defines the timeout for the assert operation", - "type": [ - "string", - "null" - ] - }, - "cleanup": { - "description": "Cleanup defines the timeout for the cleanup operation", - "type": [ - "string", - "null" - ] - }, - "delete": { - "description": "Delete defines the timeout for the delete operation", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error defines the timeout for the error operation", - "type": [ - "string", - "null" - ] - }, - "exec": { - "description": "Exec defines the timeout for exec operations", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "x-kubernetes-group-version-kind": [ - { - "group": "chainsaw.kyverno.io", - "kind": "Test", - "version": "v1alpha2" - } - ], - "additionalProperties": false, - "$schema": "http://json-schema.org/schema#" -} \ No newline at end of file diff --git a/pkg/apis/v1alpha2/action.go b/pkg/apis/v1alpha2/action.go deleted file mode 100644 index f3a2adc67..000000000 --- a/pkg/apis/v1alpha2/action.go +++ /dev/null @@ -1,325 +0,0 @@ -package v1alpha2 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" -) - -// ActionCheck contains check for an action. -type ActionCheck struct { - // Check is an assertion tree to validate the operation outcome. - // +optional - Check *Check `json:"check,omitempty"` -} - -// ActionCheckRef contains check reference options for an action. -type ActionCheckRef struct { - FileRef `json:",inline"` - - // Check provides a check used in assertions. - // +optional - Check *Check `json:"resource,omitempty"` - - // Template determines whether resources should be considered for templating. - // +optional - Template *bool `json:"template,omitempty"` -} - -// ActionDryRun contains dry run options for an action. -type ActionDryRun struct { - // DryRun determines whether the file should be applied in dry run mode. - // +optional - DryRun *bool `json:"dryRun,omitempty"` -} - -// ActionEnv contains environment options for an action. -type ActionEnv struct { - // Env defines additional environment variables. - // +optional - Env []Binding `json:"env,omitempty"` - - // SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise. - // +optional - SkipLogOutput bool `json:"skipLogOutput,omitempty"` -} - -// ActionExpectations contains expectations for an action. -type ActionExpectations struct { - // Expect defines a list of matched checks to validate the operation outcome. - // +optional - Expect []Expectation `json:"expect,omitempty"` -} - -// ActionFormat contains format for an action. -type ActionFormat struct { - // Format determines the output format (json or yaml). - // +optional - Format Format `json:"format,omitempty"` -} - -type ActionInlineResource struct { - // Resource provides a resource to be applied. - // +kubebuilder:validation:XEmbeddedResource - // +kubebuilder:pruning:PreserveUnknownFields - // +optional - Resource *unstructured.Unstructured `json:"resource,omitempty"` -} - -// ActionObject contains object selector options for an action. -type ActionObject struct { - ObjectType `json:",inline"` - ActionObjectSelector `json:",inline"` -} - -// ActionObjectSelector contains object selector options for an action. -type ActionObjectSelector struct { - ObjectName `json:",inline"` - - // Selector defines labels selector. - // +optional - Selector string `json:"selector,omitempty"` -} - -// FileRef represents a file reference. -type FileRef struct { - // File is the path to the referenced file. This can be a direct path to a file - // or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - // files within the "manifest" directory. - File string `json:"file,omitempty"` -} - -// ActionResourceRef contains resource reference options for an action. -type ActionResourceRef struct { - FileRef `json:",inline"` - // Resource provides a resource to be applied. - // +kubebuilder:validation:XEmbeddedResource - // +kubebuilder:pruning:PreserveUnknownFields - // +optional - Resource *unstructured.Unstructured `json:"resource,omitempty"` - // ActionInlineResource `json:",inline"` - - // Template determines whether resources should be considered for templating. - // +optional - Template *bool `json:"template,omitempty"` -} - -// ActionTimeout contains timeout options for an action. -type ActionTimeout struct { - // Timeout for the operation. Overrides the global timeout set in the Configuration. - // +optional - Timeout *metav1.Duration `json:"timeout,omitempty"` -} - -// Apply represents a set of configurations or resources that -// should be applied during testing. -// +k8s:conversion-gen=false -type Apply struct { - ActionDryRun `json:",inline"` - ActionExpectations `json:",inline"` - ActionResourceRef `json:",inline"` - ActionTimeout `json:",inline"` -} - -// Assert represents a test condition that is expected to hold true -// during the testing process. -// +k8s:conversion-gen=false -type Assert struct { - ActionCheckRef `json:",inline"` - ActionTimeout `json:",inline"` -} - -// Command describes a command to run as a part of a test step. -// +k8s:conversion-gen=false -type Command struct { - ActionCheck `json:",inline"` - ActionEnv `json:",inline"` - ActionTimeout `json:",inline"` - - // Entrypoint is the command entry point to run. - Entrypoint string `json:"entrypoint"` - - // Args is the command arguments. - // +optional - Args []string `json:"args,omitempty"` -} - -// Create represents a set of resources that should be created. -// If a resource already exists in the cluster it will fail. -// +k8s:conversion-gen=false -type Create struct { - ActionDryRun `json:",inline"` - ActionExpectations `json:",inline"` - ActionResourceRef `json:",inline"` - ActionTimeout `json:",inline"` -} - -// Delete is a reference to an object that should be deleted -// +k8s:conversion-gen=false -type Delete struct { - ActionExpectations `json:",inline"` - ActionTimeout `json:",inline"` - - // Template determines whether resources should be considered for templating. - // +optional - Template *bool `json:"template,omitempty"` - - // File is the path to the referenced file. This can be a direct path to a file - // or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - // files within the "manifest" directory. - // +optional - File string `json:"file,omitempty"` - - // Ref determines objects to be deleted. - // +optional - Ref *ObjectReference `json:"ref,omitempty"` - - // DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - // the object, and how the garbage collector will handle the propagation. - // Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - // +optional - // +kubebuilder:validation:Enum:=Orphan;Background;Foreground - DeletionPropagationPolicy *metav1.DeletionPropagation `json:"deletionPropagationPolicy,omitempty"` -} - -// Describe defines how to describe resources. -// +k8s:conversion-gen=false -type Describe struct { - ActionObject `json:",inline"` - ActionTimeout `json:",inline"` - - // Show Events indicates whether to include related events. - // +optional - ShowEvents *bool `json:"showEvents,omitempty"` -} - -// Error represents an anticipated error condition that may arise during testing. -// Instead of treating such an error as a test failure, it acknowledges it as expected. -// +k8s:conversion-gen=false -type Error struct { - ActionCheckRef `json:",inline"` - ActionTimeout `json:",inline"` -} - -// Events defines how to collect events. -// +k8s:conversion-gen=false -type Events struct { - ActionFormat `json:",inline"` - ActionObjectSelector `json:",inline"` - ActionTimeout `json:",inline"` -} - -// Get defines how to get resources. -// +k8s:conversion-gen=false -type Get struct { - ActionFormat `json:",inline"` - ActionObject `json:",inline"` - ActionTimeout `json:",inline"` -} - -// Patch represents a set of resources that should be patched. -// If a resource doesn't exist yet in the cluster it will fail. -// +k8s:conversion-gen=false -type Patch struct { - ActionDryRun `json:",inline"` - ActionExpectations `json:",inline"` - ActionResourceRef `json:",inline"` - ActionTimeout `json:",inline"` -} - -// PodLogs defines how to collect pod logs. -// +k8s:conversion-gen=false -type PodLogs struct { - ActionObjectSelector `json:",inline"` - ActionTimeout `json:",inline"` - - // Container in pod to get logs from else --all-containers is used. - // +optional - Container string `json:"container,omitempty"` - - // Tail is the number of last lines to collect from pods. If omitted or zero, - // then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - // This matches default behavior of `kubectl logs`. - // +optional - Tail *int `json:"tail,omitempty"` -} - -// Script describes a script to run as a part of a test step. -// +k8s:conversion-gen=false -type Script struct { - ActionCheck `json:",inline"` - ActionEnv `json:",inline"` - ActionTimeout `json:",inline"` - - // Content defines a shell script (run with "sh -c ..."). - // +optional - Content string `json:"content,omitempty"` -} - -// Sleep represents a duration while nothing happens. -// +k8s:conversion-gen=false -type Sleep struct { - // Duration is the delay used for sleeping. - Duration metav1.Duration `json:"duration"` -} - -// Update represents a set of resources that should be updated. -// If a resource does not exist in the cluster it will fail. -// +k8s:conversion-gen=false -type Update struct { - ActionDryRun `json:",inline"` - ActionExpectations `json:",inline"` - ActionResourceRef `json:",inline"` - ActionTimeout `json:",inline"` -} - -// Wait specifies how to perform wait operations on resources. -// +k8s:conversion-gen=false -type Wait struct { - ActionTimeout `json:",inline"` - ActionFormat `json:",inline"` - ActionObject `json:",inline"` - - // WaitFor specifies the condition to wait for. - WaitFor `json:"for"` -} - -// WaitFor specifies the condition to wait for. -// +k8s:conversion-gen=false -type WaitFor struct { - // Deletion specifies parameters for waiting on a resource's deletion. - // +optional - Deletion *WaitForDeletion `json:"deletion,omitempty"` - - // Condition specifies the condition to wait for. - // +optional - Condition *WaitForCondition `json:"condition,omitempty"` - - // JsonPath specifies the json path condition to wait for. - // +optional - JsonPath *WaitForJsonPath `json:"jsonPath,omitempty"` -} - -// WaitForCondition represents parameters for waiting on a specific condition of a resource. -// +k8s:conversion-gen=false -type WaitForCondition struct { - // Name defines the specific condition to wait for, e.g., "Available", "Ready". - Name string `json:"name"` - - // Value defines the specific condition status to wait for, e.g., "True", "False". - // +optional - Value *string `json:"value,omitempty"` -} - -// WaitForDeletion represents parameters for waiting on a resource's deletion. -// +k8s:conversion-gen=false -type WaitForDeletion struct{} - -// WaitForJsonPath represents parameters for waiting on a json path of a resource. -// +k8s:conversion-gen=false -type WaitForJsonPath struct { - // Path defines the json path to wait for, e.g. '{.status.phase}'. - Path string `json:"path"` - - // Value defines the expected value to wait for, e.g., "Running". - Value string `json:"value"` -} diff --git a/pkg/apis/v1alpha2/operation.go b/pkg/apis/v1alpha2/operation.go deleted file mode 100644 index 5fc58b134..000000000 --- a/pkg/apis/v1alpha2/operation.go +++ /dev/null @@ -1,115 +0,0 @@ -package v1alpha2 - -// Operation defines operation elements. -// +k8s:conversion-gen=false -type Operation struct { - OperationAction `json:",inline"` - OperationBindings `json:",inline"` - OperationClusters `json:",inline"` - OperationOutputs `json:",inline"` - - // Description contains a description of the operation. - // +optional - Description string `json:"description,omitempty"` -} - -// OperationAction defines an operation action, only one action should be specified per operation. -type OperationAction struct { - // Apply represents resources that should be applied for this test step. This can include things - // like configuration settings or any other resources that need to be available during the test. - // +optional - Apply *Apply `json:"apply,omitempty"` - - // Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true. - // +optional - Assert *Assert `json:"assert,omitempty"` - - // Command defines a command to run. - // +optional - Command *Command `json:"command,omitempty"` - - // Create represents a creation operation. - // +optional - Create *Create `json:"create,omitempty"` - - // Delete represents a deletion operation. - // +optional - Delete *Delete `json:"delete,omitempty"` - - // Describe determines the resource describe collector to execute. - // +optional - Describe *Describe `json:"describe,omitempty"` - - // Error represents the expected errors for this test step. If any of these errors occur, the test - // will consider them as expected; otherwise, they will be treated as test failures. - // +optional - Error *Error `json:"error,omitempty"` - - // Events determines the events collector to execute. - // +optional - Events *Events `json:"events,omitempty"` - - // Get determines the resource get collector to execute. - // +optional - Get *Get `json:"get,omitempty"` - - // Patch represents a patch operation. - // +optional - Patch *Patch `json:"patch,omitempty"` - - // PodLogs determines the pod logs collector to execute. - // +optional - PodLogs *PodLogs `json:"podLogs,omitempty"` - - // Script defines a script to run. - // +optional - Script *Script `json:"script,omitempty"` - - // Sleep defines zzzz. - // +optional - Sleep *Sleep `json:"sleep,omitempty"` - - // Update represents an update operation. - // +optional - Update *Update `json:"update,omitempty"` - - // Wait determines the resource wait collector to execute. - // +optional - Wait *Wait `json:"wait,omitempty"` -} - -// OperationBindings contains bindings options for an operation. -type OperationBindings struct { - // Bindings defines additional binding key/values. - // +optional - Bindings []Binding `json:"bindings,omitempty"` -} - -// OperationClusters contains clusters options for an operation. -type OperationClusters struct { - // Cluster defines the target cluster (default cluster will be used if not specified and/or overridden). - // +optional - Cluster string `json:"cluster,omitempty"` - - // Clusters holds a registry to clusters to support multi-cluster tests. - // +optional - Clusters Clusters `json:"clusters,omitempty"` -} - -// OperationOutputs contains outputs options for an operation. -type OperationOutputs struct { - // Outputs defines output bindings. - // +optional - Outputs []Output `json:"outputs,omitempty"` -} - -// TryOperation defines operation elements. -// +k8s:conversion-gen=false -type TryOperation struct { - Operation `json:",inline"` - - // ContinueOnError determines whether a test should continue or not in case the operation was not successful. - // Even if the test continues executing, it will still be reported as failed. - // +optional - ContinueOnError *bool `json:"continueOnError,omitempty"` -} diff --git a/pkg/apis/v1alpha2/step.go b/pkg/apis/v1alpha2/step.go deleted file mode 100644 index 9cc82d9f9..000000000 --- a/pkg/apis/v1alpha2/step.go +++ /dev/null @@ -1,71 +0,0 @@ -package v1alpha2 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// TestStep contains the test step definition used in a test spec. -// +k8s:conversion-gen=false -type TestStep struct { - // Name of the step. - // +optional - Name string `json:"name,omitempty"` - - // TestStepSpec of the step. - TestStepSpec `json:",inline"` -} - -// TestStepSpec defines the desired state and behavior for each test step. -// +k8s:conversion-gen=false -type TestStepSpec struct { - // Description contains a description of the test step. - // +optional - Description string `json:"description,omitempty"` - - // Timeouts for the test step. Overrides the global timeouts set in the Configuration and the timeouts eventually set in the Test. - // +optional - Timeouts *Timeouts `json:"timeouts,omitempty"` - - // DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - // the object, and how the garbage collector will handle the propagation. - // Overrides the deletion propagation policy set in both the Configuration and the Test. - // +optional - // +kubebuilder:validation:Enum:=Orphan;Background;Foreground - DeletionPropagationPolicy *metav1.DeletionPropagation `json:"deletionPropagationPolicy,omitempty"` - - // Cluster defines the target cluster (default cluster will be used if not specified and/or overridden). - // +optional - Cluster string `json:"cluster,omitempty"` - - // Clusters holds a registry to clusters to support multi-cluster tests. - // +optional - Clusters Clusters `json:"clusters,omitempty"` - - // SkipDelete determines whether the resources created by the step should be deleted after the test step is executed. - // +optional - SkipDelete *bool `json:"skipDelete,omitempty"` - - // Template determines whether resources should be considered for templating. - // +optional - Template *bool `json:"template,omitempty"` - - // Bindings defines additional binding key/values. - // +optional - Bindings []Binding `json:"bindings,omitempty"` - - // Try defines what the step will try to execute. - // +kubebuilder:validation:MinItems:=1 - Try []TryOperation `json:"try"` - - // Catch defines what the step will execute when an error happens. - // +optional - Catch []Operation `json:"catch,omitempty"` - - // Finally defines what the step will execute after the step is terminated. - // +optional - Finally []Operation `json:"finally,omitempty"` - - // Cleanup defines what will be executed after the test is terminated. - // +optional - Cleanup []Operation `json:"cleanup,omitempty"` -} diff --git a/pkg/apis/v1alpha2/test.go b/pkg/apis/v1alpha2/test.go deleted file mode 100644 index d03aa0325..000000000 --- a/pkg/apis/v1alpha2/test.go +++ /dev/null @@ -1,96 +0,0 @@ -package v1alpha2 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -// +genclient -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:object:root=true -// +kubebuilder:resource:scope=Cluster - -// Test is the resource that contains a test definition. -type Test struct { - metav1.TypeMeta `json:",inline"` - - // Standard object's metadata. - // +optional - metav1.ObjectMeta `json:"metadata,omitempty"` - - // Test spec. - Spec TestSpec `json:"spec"` -} - -// TestSpec contains the test spec. -// +k8s:conversion-gen=false -type TestSpec struct { - // Cleanup contains cleanup configuration. - // +optional - // +kubebuilder:default:={} - Cleanup CleanupOptions `json:"cleanup"` - - // Cluster defines the target cluster (default cluster will be used if not specified and/or overridden). - // +optional - Cluster string `json:"cluster,omitempty"` - - // Clusters holds a registry to clusters to support multi-cluster tests. - // +optional - Clusters Clusters `json:"clusters,omitempty"` - - // Execution contains tests execution configuration. - // +optional - // +kubebuilder:default:={} - Execution TestExecutionOptions `json:"execution"` - - // Bindings defines additional binding key/values. - // +optional - Bindings []Binding `json:"bindings,omitempty"` - - // Deletion contains the global deletion configuration. - // +optional - // +kubebuilder:default:={} - Deletion DeletionOptions `json:"deletion"` - - // Description contains a description of the test. - // +optional - Description string `json:"description,omitempty"` - - // Error contains the global error configuration. - // +optional - // +kubebuilder:default:={} - Error ErrorOptions `json:"error"` - - // Namespace contains properties for the namespace to use for tests. - // +optional - // +kubebuilder:default:={} - Namespace NamespaceOptions `json:"namespace"` - - // Steps defining the test. - Steps []TestStep `json:"steps"` - - // Templating contains the templating config. - // +optional - // +kubebuilder:default:={} - Templating TemplatingOptions `json:"templating"` - - // Timeouts for the test. Overrides the global timeouts set in the Configuration on a per operation basis. - // +optional - // +kubebuilder:default:={} - Timeouts Timeouts `json:"timeouts"` -} - -// TestExecutionOptions determines how tests are run. -type TestExecutionOptions struct { - // Concurrent determines whether the test should run concurrently with other tests. - // +optional - // +kubebuilder:default:=true - Concurrent bool `json:"concurrent"` - - // Skip determines whether the test should skipped. - // +optional - Skip bool `json:"skip,omitempty"` - - // TerminationGracePeriod forces the termination grace period on pods, statefulsets, daemonsets and deployments. - // +optional - TerminationGracePeriod *metav1.Duration `json:"terminationGracePeriod,omitempty"` -} diff --git a/pkg/apis/v1alpha2/types.go b/pkg/apis/v1alpha2/types.go index 4e2f5615e..160c441c6 100644 --- a/pkg/apis/v1alpha2/types.go +++ b/pkg/apis/v1alpha2/types.go @@ -3,33 +3,10 @@ package v1alpha2 import ( "github.com/kyverno/chainsaw/pkg/apis/v1alpha1" _ "github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) type ( Any = v1alpha1.Any - Binding = v1alpha1.Binding - Check = v1alpha1.Check - Cluster = v1alpha1.Cluster Clusters = v1alpha1.Clusters - Expectation = v1alpha1.Expectation - Format = v1alpha1.Format - ObjectName = v1alpha1.ObjectName - ObjectType = v1alpha1.ObjectType - Output = v1alpha1.Output - Timeouts = v1alpha1.Timeouts DefaultTimeouts = v1alpha1.DefaultTimeouts ) - -// ObjectReference represents one or more objects with a specific apiVersion and kind. -// For a single object name and namespace are used to identify the object. -// For multiple objects use labels. -// +k8s:conversion-gen=false -type ObjectReference struct { - ObjectType `json:",inline"` - ObjectName `json:",inline"` - - // Label selector to match objects to delete - // +optional - Labels *metav1.LabelSelector `json:"labelSelector,omitempty"` -} diff --git a/pkg/apis/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/v1alpha2/zz_generated.deepcopy.go index eca7d83c9..850aa76b7 100644 --- a/pkg/apis/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/v1alpha2/zz_generated.deepcopy.go @@ -28,952 +28,28 @@ import ( ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionCheck) DeepCopyInto(out *ActionCheck) { - *out = *in - if in.Check != nil { - in, out := &in.Check, &out.Check - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionCheck. -func (in *ActionCheck) DeepCopy() *ActionCheck { - if in == nil { - return nil - } - out := new(ActionCheck) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionCheckRef) DeepCopyInto(out *ActionCheckRef) { - *out = *in - out.FileRef = in.FileRef - if in.Check != nil { - in, out := &in.Check, &out.Check - *out = (*in).DeepCopy() - } - if in.Template != nil { - in, out := &in.Template, &out.Template - *out = new(bool) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionCheckRef. -func (in *ActionCheckRef) DeepCopy() *ActionCheckRef { - if in == nil { - return nil - } - out := new(ActionCheckRef) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionDryRun) DeepCopyInto(out *ActionDryRun) { - *out = *in - if in.DryRun != nil { - in, out := &in.DryRun, &out.DryRun - *out = new(bool) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionDryRun. -func (in *ActionDryRun) DeepCopy() *ActionDryRun { - if in == nil { - return nil - } - out := new(ActionDryRun) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionEnv) DeepCopyInto(out *ActionEnv) { - *out = *in - if in.Env != nil { - in, out := &in.Env, &out.Env - *out = make([]v1alpha1.Binding, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionEnv. -func (in *ActionEnv) DeepCopy() *ActionEnv { - if in == nil { - return nil - } - out := new(ActionEnv) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionExpectations) DeepCopyInto(out *ActionExpectations) { - *out = *in - if in.Expect != nil { - in, out := &in.Expect, &out.Expect - *out = make([]v1alpha1.Expectation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionExpectations. -func (in *ActionExpectations) DeepCopy() *ActionExpectations { - if in == nil { - return nil - } - out := new(ActionExpectations) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionFormat) DeepCopyInto(out *ActionFormat) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionFormat. -func (in *ActionFormat) DeepCopy() *ActionFormat { - if in == nil { - return nil - } - out := new(ActionFormat) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionInlineResource) DeepCopyInto(out *ActionInlineResource) { - *out = *in - if in.Resource != nil { - in, out := &in.Resource, &out.Resource - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionInlineResource. -func (in *ActionInlineResource) DeepCopy() *ActionInlineResource { - if in == nil { - return nil - } - out := new(ActionInlineResource) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionObject) DeepCopyInto(out *ActionObject) { - *out = *in - out.ObjectType = in.ObjectType - out.ActionObjectSelector = in.ActionObjectSelector - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionObject. -func (in *ActionObject) DeepCopy() *ActionObject { - if in == nil { - return nil - } - out := new(ActionObject) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionObjectSelector) DeepCopyInto(out *ActionObjectSelector) { - *out = *in - out.ObjectName = in.ObjectName - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionObjectSelector. -func (in *ActionObjectSelector) DeepCopy() *ActionObjectSelector { - if in == nil { - return nil - } - out := new(ActionObjectSelector) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionResourceRef) DeepCopyInto(out *ActionResourceRef) { - *out = *in - out.FileRef = in.FileRef - if in.Resource != nil { - in, out := &in.Resource, &out.Resource - *out = (*in).DeepCopy() - } - if in.Template != nil { - in, out := &in.Template, &out.Template - *out = new(bool) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionResourceRef. -func (in *ActionResourceRef) DeepCopy() *ActionResourceRef { - if in == nil { - return nil - } - out := new(ActionResourceRef) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ActionTimeout) DeepCopyInto(out *ActionTimeout) { - *out = *in - if in.Timeout != nil { - in, out := &in.Timeout, &out.Timeout - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionTimeout. -func (in *ActionTimeout) DeepCopy() *ActionTimeout { - if in == nil { - return nil - } - out := new(ActionTimeout) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Apply) DeepCopyInto(out *Apply) { - *out = *in - in.ActionDryRun.DeepCopyInto(&out.ActionDryRun) - in.ActionExpectations.DeepCopyInto(&out.ActionExpectations) - in.ActionResourceRef.DeepCopyInto(&out.ActionResourceRef) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Apply. -func (in *Apply) DeepCopy() *Apply { - if in == nil { - return nil - } - out := new(Apply) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Assert) DeepCopyInto(out *Assert) { - *out = *in - in.ActionCheckRef.DeepCopyInto(&out.ActionCheckRef) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Assert. -func (in *Assert) DeepCopy() *Assert { - if in == nil { - return nil - } - out := new(Assert) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *CleanupOptions) DeepCopyInto(out *CleanupOptions) { - *out = *in - if in.DelayBeforeCleanup != nil { - in, out := &in.DelayBeforeCleanup, &out.DelayBeforeCleanup - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CleanupOptions. -func (in *CleanupOptions) DeepCopy() *CleanupOptions { - if in == nil { - return nil - } - out := new(CleanupOptions) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Command) DeepCopyInto(out *Command) { - *out = *in - in.ActionCheck.DeepCopyInto(&out.ActionCheck) - in.ActionEnv.DeepCopyInto(&out.ActionEnv) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - if in.Args != nil { - in, out := &in.Args, &out.Args - *out = make([]string, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Command. -func (in *Command) DeepCopy() *Command { - if in == nil { - return nil - } - out := new(Command) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Configuration) DeepCopyInto(out *Configuration) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Configuration. -func (in *Configuration) DeepCopy() *Configuration { - if in == nil { - return nil - } - out := new(Configuration) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Configuration) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConfigurationSpec) DeepCopyInto(out *ConfigurationSpec) { - *out = *in - in.Cleanup.DeepCopyInto(&out.Cleanup) - if in.Clusters != nil { - in, out := &in.Clusters, &out.Clusters - *out = make(v1alpha1.Clusters, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - out.Deletion = in.Deletion - out.Discovery = in.Discovery - in.Error.DeepCopyInto(&out.Error) - in.Execution.DeepCopyInto(&out.Execution) - in.Namespace.DeepCopyInto(&out.Namespace) - if in.Report != nil { - in, out := &in.Report, &out.Report - *out = new(ReportOptions) - **out = **in - } - out.Templating = in.Templating - out.Timeouts = in.Timeouts - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationSpec. -func (in *ConfigurationSpec) DeepCopy() *ConfigurationSpec { - if in == nil { - return nil - } - out := new(ConfigurationSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Create) DeepCopyInto(out *Create) { - *out = *in - in.ActionDryRun.DeepCopyInto(&out.ActionDryRun) - in.ActionExpectations.DeepCopyInto(&out.ActionExpectations) - in.ActionResourceRef.DeepCopyInto(&out.ActionResourceRef) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Create. -func (in *Create) DeepCopy() *Create { - if in == nil { - return nil - } - out := new(Create) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Delete) DeepCopyInto(out *Delete) { - *out = *in - in.ActionExpectations.DeepCopyInto(&out.ActionExpectations) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - if in.Template != nil { - in, out := &in.Template, &out.Template - *out = new(bool) - **out = **in - } - if in.Ref != nil { - in, out := &in.Ref, &out.Ref - *out = new(ObjectReference) - (*in).DeepCopyInto(*out) - } - if in.DeletionPropagationPolicy != nil { - in, out := &in.DeletionPropagationPolicy, &out.DeletionPropagationPolicy - *out = new(v1.DeletionPropagation) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Delete. -func (in *Delete) DeepCopy() *Delete { - if in == nil { - return nil - } - out := new(Delete) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DeletionOptions) DeepCopyInto(out *DeletionOptions) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeletionOptions. -func (in *DeletionOptions) DeepCopy() *DeletionOptions { - if in == nil { - return nil - } - out := new(DeletionOptions) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Describe) DeepCopyInto(out *Describe) { - *out = *in - out.ActionObject = in.ActionObject - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - if in.ShowEvents != nil { - in, out := &in.ShowEvents, &out.ShowEvents - *out = new(bool) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Describe. -func (in *Describe) DeepCopy() *Describe { - if in == nil { - return nil - } - out := new(Describe) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DiscoveryOptions) DeepCopyInto(out *DiscoveryOptions) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DiscoveryOptions. -func (in *DiscoveryOptions) DeepCopy() *DiscoveryOptions { - if in == nil { - return nil - } - out := new(DiscoveryOptions) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Error) DeepCopyInto(out *Error) { - *out = *in - in.ActionCheckRef.DeepCopyInto(&out.ActionCheckRef) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Error. -func (in *Error) DeepCopy() *Error { - if in == nil { - return nil - } - out := new(Error) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ErrorOptions) DeepCopyInto(out *ErrorOptions) { - *out = *in - if in.Catch != nil { - in, out := &in.Catch, &out.Catch - *out = make([]v1alpha1.CatchFinally, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorOptions. -func (in *ErrorOptions) DeepCopy() *ErrorOptions { - if in == nil { - return nil - } - out := new(ErrorOptions) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Events) DeepCopyInto(out *Events) { - *out = *in - out.ActionFormat = in.ActionFormat - out.ActionObjectSelector = in.ActionObjectSelector - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Events. -func (in *Events) DeepCopy() *Events { - if in == nil { - return nil - } - out := new(Events) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ExecutionOptions) DeepCopyInto(out *ExecutionOptions) { - *out = *in - if in.Parallel != nil { - in, out := &in.Parallel, &out.Parallel - *out = new(int) - **out = **in - } - if in.RepeatCount != nil { - in, out := &in.RepeatCount, &out.RepeatCount - *out = new(int) - **out = **in - } - if in.ForceTerminationGracePeriod != nil { - in, out := &in.ForceTerminationGracePeriod, &out.ForceTerminationGracePeriod - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionOptions. -func (in *ExecutionOptions) DeepCopy() *ExecutionOptions { - if in == nil { - return nil - } - out := new(ExecutionOptions) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *FileRef) DeepCopyInto(out *FileRef) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileRef. -func (in *FileRef) DeepCopy() *FileRef { - if in == nil { - return nil - } - out := new(FileRef) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Get) DeepCopyInto(out *Get) { - *out = *in - out.ActionFormat = in.ActionFormat - out.ActionObject = in.ActionObject - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Get. -func (in *Get) DeepCopy() *Get { - if in == nil { - return nil - } - out := new(Get) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *NamespaceOptions) DeepCopyInto(out *NamespaceOptions) { - *out = *in - if in.Template != nil { - in, out := &in.Template, &out.Template - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceOptions. -func (in *NamespaceOptions) DeepCopy() *NamespaceOptions { - if in == nil { - return nil - } - out := new(NamespaceOptions) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ObjectReference) DeepCopyInto(out *ObjectReference) { - *out = *in - out.ObjectType = in.ObjectType - out.ObjectName = in.ObjectName - if in.Labels != nil { - in, out := &in.Labels, &out.Labels - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectReference. -func (in *ObjectReference) DeepCopy() *ObjectReference { - if in == nil { - return nil - } - out := new(ObjectReference) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Operation) DeepCopyInto(out *Operation) { - *out = *in - in.OperationAction.DeepCopyInto(&out.OperationAction) - in.OperationBindings.DeepCopyInto(&out.OperationBindings) - in.OperationClusters.DeepCopyInto(&out.OperationClusters) - in.OperationOutputs.DeepCopyInto(&out.OperationOutputs) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Operation. -func (in *Operation) DeepCopy() *Operation { - if in == nil { - return nil - } - out := new(Operation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OperationAction) DeepCopyInto(out *OperationAction) { - *out = *in - if in.Apply != nil { - in, out := &in.Apply, &out.Apply - *out = new(Apply) - (*in).DeepCopyInto(*out) - } - if in.Assert != nil { - in, out := &in.Assert, &out.Assert - *out = new(Assert) - (*in).DeepCopyInto(*out) - } - if in.Command != nil { - in, out := &in.Command, &out.Command - *out = new(Command) - (*in).DeepCopyInto(*out) - } - if in.Create != nil { - in, out := &in.Create, &out.Create - *out = new(Create) - (*in).DeepCopyInto(*out) - } - if in.Delete != nil { - in, out := &in.Delete, &out.Delete - *out = new(Delete) - (*in).DeepCopyInto(*out) - } - if in.Describe != nil { - in, out := &in.Describe, &out.Describe - *out = new(Describe) - (*in).DeepCopyInto(*out) - } - if in.Error != nil { - in, out := &in.Error, &out.Error - *out = new(Error) - (*in).DeepCopyInto(*out) - } - if in.Events != nil { - in, out := &in.Events, &out.Events - *out = new(Events) - (*in).DeepCopyInto(*out) - } - if in.Get != nil { - in, out := &in.Get, &out.Get - *out = new(Get) - (*in).DeepCopyInto(*out) - } - if in.Patch != nil { - in, out := &in.Patch, &out.Patch - *out = new(Patch) - (*in).DeepCopyInto(*out) - } - if in.PodLogs != nil { - in, out := &in.PodLogs, &out.PodLogs - *out = new(PodLogs) - (*in).DeepCopyInto(*out) - } - if in.Script != nil { - in, out := &in.Script, &out.Script - *out = new(Script) - (*in).DeepCopyInto(*out) - } - if in.Sleep != nil { - in, out := &in.Sleep, &out.Sleep - *out = new(Sleep) - **out = **in - } - if in.Update != nil { - in, out := &in.Update, &out.Update - *out = new(Update) - (*in).DeepCopyInto(*out) - } - if in.Wait != nil { - in, out := &in.Wait, &out.Wait - *out = new(Wait) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationAction. -func (in *OperationAction) DeepCopy() *OperationAction { - if in == nil { - return nil - } - out := new(OperationAction) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OperationBindings) DeepCopyInto(out *OperationBindings) { - *out = *in - if in.Bindings != nil { - in, out := &in.Bindings, &out.Bindings - *out = make([]v1alpha1.Binding, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationBindings. -func (in *OperationBindings) DeepCopy() *OperationBindings { - if in == nil { - return nil - } - out := new(OperationBindings) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OperationClusters) DeepCopyInto(out *OperationClusters) { - *out = *in - if in.Clusters != nil { - in, out := &in.Clusters, &out.Clusters - *out = make(v1alpha1.Clusters, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationClusters. -func (in *OperationClusters) DeepCopy() *OperationClusters { - if in == nil { - return nil - } - out := new(OperationClusters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OperationOutputs) DeepCopyInto(out *OperationOutputs) { - *out = *in - if in.Outputs != nil { - in, out := &in.Outputs, &out.Outputs - *out = make([]v1alpha1.Output, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationOutputs. -func (in *OperationOutputs) DeepCopy() *OperationOutputs { - if in == nil { - return nil - } - out := new(OperationOutputs) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Patch) DeepCopyInto(out *Patch) { - *out = *in - in.ActionDryRun.DeepCopyInto(&out.ActionDryRun) - in.ActionExpectations.DeepCopyInto(&out.ActionExpectations) - in.ActionResourceRef.DeepCopyInto(&out.ActionResourceRef) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Patch. -func (in *Patch) DeepCopy() *Patch { - if in == nil { - return nil - } - out := new(Patch) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *PodLogs) DeepCopyInto(out *PodLogs) { +func (in *CleanupOptions) DeepCopyInto(out *CleanupOptions) { *out = *in - out.ActionObjectSelector = in.ActionObjectSelector - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - if in.Tail != nil { - in, out := &in.Tail, &out.Tail - *out = new(int) + if in.DelayBeforeCleanup != nil { + in, out := &in.DelayBeforeCleanup, &out.DelayBeforeCleanup + *out = new(v1.Duration) **out = **in } return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodLogs. -func (in *PodLogs) DeepCopy() *PodLogs { - if in == nil { - return nil - } - out := new(PodLogs) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ReportOptions) DeepCopyInto(out *ReportOptions) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReportOptions. -func (in *ReportOptions) DeepCopy() *ReportOptions { - if in == nil { - return nil - } - out := new(ReportOptions) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Script) DeepCopyInto(out *Script) { - *out = *in - in.ActionCheck.DeepCopyInto(&out.ActionCheck) - in.ActionEnv.DeepCopyInto(&out.ActionEnv) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Script. -func (in *Script) DeepCopy() *Script { - if in == nil { - return nil - } - out := new(Script) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Sleep) DeepCopyInto(out *Sleep) { - *out = *in - out.Duration = in.Duration - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sleep. -func (in *Sleep) DeepCopy() *Sleep { - if in == nil { - return nil - } - out := new(Sleep) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TemplatingOptions) DeepCopyInto(out *TemplatingOptions) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemplatingOptions. -func (in *TemplatingOptions) DeepCopy() *TemplatingOptions { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CleanupOptions. +func (in *CleanupOptions) DeepCopy() *CleanupOptions { if in == nil { return nil } - out := new(TemplatingOptions) + out := new(CleanupOptions) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Test) DeepCopyInto(out *Test) { +func (in *Configuration) DeepCopyInto(out *Configuration) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -981,18 +57,18 @@ func (in *Test) DeepCopyInto(out *Test) { return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Test. -func (in *Test) DeepCopy() *Test { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Configuration. +func (in *Configuration) DeepCopy() *Configuration { if in == nil { return nil } - out := new(Test) + out := new(Configuration) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Test) DeepCopyObject() runtime.Object { +func (in *Configuration) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -1000,28 +76,7 @@ func (in *Test) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TestExecutionOptions) DeepCopyInto(out *TestExecutionOptions) { - *out = *in - if in.TerminationGracePeriod != nil { - in, out := &in.TerminationGracePeriod, &out.TerminationGracePeriod - *out = new(v1.Duration) - **out = **in - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestExecutionOptions. -func (in *TestExecutionOptions) DeepCopy() *TestExecutionOptions { - if in == nil { - return nil - } - out := new(TestExecutionOptions) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TestSpec) DeepCopyInto(out *TestSpec) { +func (in *ConfigurationSpec) DeepCopyInto(out *ConfigurationSpec) { *out = *in in.Cleanup.DeepCopyInto(&out.Cleanup) if in.Clusters != nil { @@ -1031,276 +86,165 @@ func (in *TestSpec) DeepCopyInto(out *TestSpec) { (*out)[key] = val } } - in.Execution.DeepCopyInto(&out.Execution) - if in.Bindings != nil { - in, out := &in.Bindings, &out.Bindings - *out = make([]v1alpha1.Binding, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } out.Deletion = in.Deletion + out.Discovery = in.Discovery in.Error.DeepCopyInto(&out.Error) + in.Execution.DeepCopyInto(&out.Execution) in.Namespace.DeepCopyInto(&out.Namespace) - if in.Steps != nil { - in, out := &in.Steps, &out.Steps - *out = make([]TestStep, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.Report != nil { + in, out := &in.Report, &out.Report + *out = new(ReportOptions) + **out = **in } out.Templating = in.Templating - in.Timeouts.DeepCopyInto(&out.Timeouts) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestSpec. -func (in *TestSpec) DeepCopy() *TestSpec { - if in == nil { - return nil - } - out := new(TestSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TestStep) DeepCopyInto(out *TestStep) { - *out = *in - in.TestStepSpec.DeepCopyInto(&out.TestStepSpec) + out.Timeouts = in.Timeouts return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestStep. -func (in *TestStep) DeepCopy() *TestStep { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationSpec. +func (in *ConfigurationSpec) DeepCopy() *ConfigurationSpec { if in == nil { return nil } - out := new(TestStep) + out := new(ConfigurationSpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TestStepSpec) DeepCopyInto(out *TestStepSpec) { +func (in *DeletionOptions) DeepCopyInto(out *DeletionOptions) { *out = *in - if in.Timeouts != nil { - in, out := &in.Timeouts, &out.Timeouts - *out = new(v1alpha1.Timeouts) - (*in).DeepCopyInto(*out) - } - if in.DeletionPropagationPolicy != nil { - in, out := &in.DeletionPropagationPolicy, &out.DeletionPropagationPolicy - *out = new(v1.DeletionPropagation) - **out = **in - } - if in.Clusters != nil { - in, out := &in.Clusters, &out.Clusters - *out = make(v1alpha1.Clusters, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.SkipDelete != nil { - in, out := &in.SkipDelete, &out.SkipDelete - *out = new(bool) - **out = **in - } - if in.Template != nil { - in, out := &in.Template, &out.Template - *out = new(bool) - **out = **in - } - if in.Bindings != nil { - in, out := &in.Bindings, &out.Bindings - *out = make([]v1alpha1.Binding, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Try != nil { - in, out := &in.Try, &out.Try - *out = make([]TryOperation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Catch != nil { - in, out := &in.Catch, &out.Catch - *out = make([]Operation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Finally != nil { - in, out := &in.Finally, &out.Finally - *out = make([]Operation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Cleanup != nil { - in, out := &in.Cleanup, &out.Cleanup - *out = make([]Operation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestStepSpec. -func (in *TestStepSpec) DeepCopy() *TestStepSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeletionOptions. +func (in *DeletionOptions) DeepCopy() *DeletionOptions { if in == nil { return nil } - out := new(TestStepSpec) + out := new(DeletionOptions) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TryOperation) DeepCopyInto(out *TryOperation) { +func (in *DiscoveryOptions) DeepCopyInto(out *DiscoveryOptions) { *out = *in - in.Operation.DeepCopyInto(&out.Operation) - if in.ContinueOnError != nil { - in, out := &in.ContinueOnError, &out.ContinueOnError - *out = new(bool) - **out = **in - } return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TryOperation. -func (in *TryOperation) DeepCopy() *TryOperation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DiscoveryOptions. +func (in *DiscoveryOptions) DeepCopy() *DiscoveryOptions { if in == nil { return nil } - out := new(TryOperation) + out := new(DiscoveryOptions) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Update) DeepCopyInto(out *Update) { +func (in *ErrorOptions) DeepCopyInto(out *ErrorOptions) { *out = *in - in.ActionDryRun.DeepCopyInto(&out.ActionDryRun) - in.ActionExpectations.DeepCopyInto(&out.ActionExpectations) - in.ActionResourceRef.DeepCopyInto(&out.ActionResourceRef) - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Update. -func (in *Update) DeepCopy() *Update { - if in == nil { - return nil + if in.Catch != nil { + in, out := &in.Catch, &out.Catch + *out = make([]v1alpha1.CatchFinally, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } } - out := new(Update) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Wait) DeepCopyInto(out *Wait) { - *out = *in - in.ActionTimeout.DeepCopyInto(&out.ActionTimeout) - out.ActionFormat = in.ActionFormat - out.ActionObject = in.ActionObject - in.WaitFor.DeepCopyInto(&out.WaitFor) return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Wait. -func (in *Wait) DeepCopy() *Wait { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorOptions. +func (in *ErrorOptions) DeepCopy() *ErrorOptions { if in == nil { return nil } - out := new(Wait) + out := new(ErrorOptions) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *WaitFor) DeepCopyInto(out *WaitFor) { +func (in *ExecutionOptions) DeepCopyInto(out *ExecutionOptions) { *out = *in - if in.Deletion != nil { - in, out := &in.Deletion, &out.Deletion - *out = new(WaitForDeletion) + if in.Parallel != nil { + in, out := &in.Parallel, &out.Parallel + *out = new(int) **out = **in } - if in.Condition != nil { - in, out := &in.Condition, &out.Condition - *out = new(WaitForCondition) - (*in).DeepCopyInto(*out) + if in.RepeatCount != nil { + in, out := &in.RepeatCount, &out.RepeatCount + *out = new(int) + **out = **in } - if in.JsonPath != nil { - in, out := &in.JsonPath, &out.JsonPath - *out = new(WaitForJsonPath) + if in.ForceTerminationGracePeriod != nil { + in, out := &in.ForceTerminationGracePeriod, &out.ForceTerminationGracePeriod + *out = new(v1.Duration) **out = **in } return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WaitFor. -func (in *WaitFor) DeepCopy() *WaitFor { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionOptions. +func (in *ExecutionOptions) DeepCopy() *ExecutionOptions { if in == nil { return nil } - out := new(WaitFor) + out := new(ExecutionOptions) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *WaitForCondition) DeepCopyInto(out *WaitForCondition) { +func (in *NamespaceOptions) DeepCopyInto(out *NamespaceOptions) { *out = *in - if in.Value != nil { - in, out := &in.Value, &out.Value - *out = new(string) - **out = **in + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = (*in).DeepCopy() } return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WaitForCondition. -func (in *WaitForCondition) DeepCopy() *WaitForCondition { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceOptions. +func (in *NamespaceOptions) DeepCopy() *NamespaceOptions { if in == nil { return nil } - out := new(WaitForCondition) + out := new(NamespaceOptions) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *WaitForDeletion) DeepCopyInto(out *WaitForDeletion) { +func (in *ReportOptions) DeepCopyInto(out *ReportOptions) { *out = *in return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WaitForDeletion. -func (in *WaitForDeletion) DeepCopy() *WaitForDeletion { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReportOptions. +func (in *ReportOptions) DeepCopy() *ReportOptions { if in == nil { return nil } - out := new(WaitForDeletion) + out := new(ReportOptions) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *WaitForJsonPath) DeepCopyInto(out *WaitForJsonPath) { +func (in *TemplatingOptions) DeepCopyInto(out *TemplatingOptions) { *out = *in return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WaitForJsonPath. -func (in *WaitForJsonPath) DeepCopy() *WaitForJsonPath { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemplatingOptions. +func (in *TemplatingOptions) DeepCopy() *TemplatingOptions { if in == nil { return nil } - out := new(WaitForJsonPath) + out := new(TemplatingOptions) in.DeepCopyInto(out) return out } diff --git a/pkg/apis/v1alpha2/zz_generated.register.go b/pkg/apis/v1alpha2/zz_generated.register.go index 7ddcb4f60..d9129453a 100644 --- a/pkg/apis/v1alpha2/zz_generated.register.go +++ b/pkg/apis/v1alpha2/zz_generated.register.go @@ -59,7 +59,6 @@ func init() { func addKnownTypes(scheme *runtime.Scheme) error { scheme.AddKnownTypes(SchemeGroupVersion, &Configuration{}, - &Test{}, ) // AddToGroupVersion allows the serialization of client types like ListOptions. v1.AddToGroupVersion(scheme, SchemeGroupVersion) diff --git a/pkg/data/crds/chainsaw.kyverno.io_tests.yaml b/pkg/data/crds/chainsaw.kyverno.io_tests.yaml index a4e26f461..5055b3438 100644 --- a/pkg/data/crds/chainsaw.kyverno.io_tests.yaml +++ b/pkg/data/crds/chainsaw.kyverno.io_tests.yaml @@ -4663,3995 +4663,3 @@ spec: type: object served: true storage: true - - name: v1alpha2 - schema: - openAPIV3Schema: - description: Test is the resource that contains a test definition. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: Test spec. - properties: - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a binding in - an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cleanup: - default: {} - description: Cleanup contains cleanup configuration. - properties: - delayBeforeCleanup: - description: DelayBeforeCleanup adds a delay between the time - a test ends and the time cleanup starts. - type: string - skipDelete: - description: If set, do not delete the resources after running - a test. - type: boolean - type: object - cluster: - description: Cluster defines the target cluster (default cluster will - be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to support multi-cluster - tests. - type: object - deletion: - default: {} - description: Deletion contains the global deletion configuration. - properties: - propagation: - default: Background - description: |- - Propagation decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - enum: - - Orphan - - Background - - Foreground - type: string - type: object - description: - description: Description contains a description of the test. - type: string - error: - default: {} - description: Error contains the global error configuration. - properties: - catch: - description: |- - Catch defines what the tests steps will execute when an error happens. - This will be combined with catch handlers defined at the test and step levels. - items: - description: CatchFinally defines actions to be executed in - catch, finally and cleanup blocks. - oneOf: - - required: - - command - - required: - - delete - - required: - - describe - - required: - - events - - required: - - get - - required: - - podLogs - - required: - - script - - required: - - sleep - - required: - - wait - properties: - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - entrypoint: - description: Entrypoint is the command entry point to - run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from the - command. Useful for sensitive logs or to reduce noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - workDir: - description: WorkDir is the working directory for command. - type: string - required: - - entrypoint - type: object - delete: - description: Delete represents a deletion operation. - not: - required: - - file - - ref - properties: - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labels: - additionalProperties: - type: string - description: Label selector to match objects to - delete - type: object - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources should - be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe collector - to execute. - not: - required: - - name - - selector - properties: - apiVersion: - description: API version of the referent. - type: string - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the operation. - type: string - events: - description: Events determines the events collector to execute. - not: - required: - - name - - selector - properties: - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector to - execute. - not: - required: - - name - - selector - properties: - apiVersion: - description: API version of the referent. - type: string - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - podLogs: - description: PodLogs determines the pod logs collector to - execute. - not: - required: - - name - - selector - properties: - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set as - a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from the - command. Useful for sensitive logs or to reduce noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - workDir: - description: WorkDir is the working directory for script. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - wait: - description: Wait determines the resource wait collector - to execute. - not: - required: - - name - - selector - properties: - apiVersion: - description: API version of the referent. - type: string - cluster: - description: Cluster defines the target cluster (will - be inherited if not specified). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition to - wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for waiting - on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path condition - to wait for. - properties: - path: - description: Path defines the json path to wait - for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides the - global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - type: array - type: object - execution: - default: {} - description: Execution contains tests execution configuration. - properties: - concurrent: - default: true - description: Concurrent determines whether the test should run - concurrently with other tests. - type: boolean - skip: - description: Skip determines whether the test should skipped. - type: boolean - terminationGracePeriod: - description: TerminationGracePeriod forces the termination grace - period on pods, statefulsets, daemonsets and deployments. - type: string - type: object - namespace: - default: {} - description: Namespace contains properties for the namespace to use - for tests. - properties: - name: - description: |- - Name defines the namespace to use for tests. - If not specified, every test will execute in a random ephemeral namespace - unless the namespace is overridden in a the test spec. - type: string - template: - description: Template defines a template to create the test namespace. - type: object - x-kubernetes-preserve-unknown-fields: true - type: object - steps: - description: Steps defining the test. - items: - description: TestStep contains the test step definition used in - a test spec. - properties: - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a binding - in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - catch: - description: Catch defines what the step will execute when an - error happens. - items: - description: Operation defines operation elements. - properties: - apply: - description: |- - Apply represents resources that should be applied for this test step. This can include things - like configuration settings or any other resources that need to be available during the test. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - assert: - description: Assert represents an assertion to be made. - It checks whether the conditions specified in the assertion - hold true. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a - binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (default - cluster will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - entrypoint: - description: Entrypoint is the command entry point - to run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - entrypoint - type: object - create: - description: Create represents a creation operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - delete: - description: Delete represents a deletion operation. - properties: - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labelSelector: - description: Label selector to match objects to - delete - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe - collector to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the - operation. - type: string - error: - description: |- - Error represents the expected errors for this test step. If any of these errors occur, the test - will consider them as expected; otherwise, they will be treated as test failures. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - events: - description: Events determines the events collector to - execute. - properties: - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - patch: - description: Patch represents a patch operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - podLogs: - description: PodLogs determines the pod logs collector - to execute. - properties: - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - update: - description: Update represents an update operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - wait: - description: Wait determines the resource wait collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition - to wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for - waiting on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path - condition to wait for. - properties: - path: - description: Path defines the json path to - wait for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - - value - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - type: array - cleanup: - description: Cleanup defines what will be executed after the - test is terminated. - items: - description: Operation defines operation elements. - properties: - apply: - description: |- - Apply represents resources that should be applied for this test step. This can include things - like configuration settings or any other resources that need to be available during the test. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - assert: - description: Assert represents an assertion to be made. - It checks whether the conditions specified in the assertion - hold true. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a - binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (default - cluster will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - entrypoint: - description: Entrypoint is the command entry point - to run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - entrypoint - type: object - create: - description: Create represents a creation operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - delete: - description: Delete represents a deletion operation. - properties: - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labelSelector: - description: Label selector to match objects to - delete - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe - collector to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the - operation. - type: string - error: - description: |- - Error represents the expected errors for this test step. If any of these errors occur, the test - will consider them as expected; otherwise, they will be treated as test failures. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - events: - description: Events determines the events collector to - execute. - properties: - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - patch: - description: Patch represents a patch operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - podLogs: - description: PodLogs determines the pod logs collector - to execute. - properties: - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - update: - description: Update represents an update operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - wait: - description: Wait determines the resource wait collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition - to wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for - waiting on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path - condition to wait for. - properties: - path: - description: Path defines the json path to - wait for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - - value - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - type: array - cluster: - description: Cluster defines the target cluster (default cluster - will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to support - multi-cluster tests. - type: object - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in both the Configuration and the Test. - enum: - - Orphan - - Background - - Foreground - type: string - description: - description: Description contains a description of the test - step. - type: string - finally: - description: Finally defines what the step will execute after - the step is terminated. - items: - description: Operation defines operation elements. - properties: - apply: - description: |- - Apply represents resources that should be applied for this test step. This can include things - like configuration settings or any other resources that need to be available during the test. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - assert: - description: Assert represents an assertion to be made. - It checks whether the conditions specified in the assertion - hold true. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a - binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (default - cluster will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - entrypoint: - description: Entrypoint is the command entry point - to run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - entrypoint - type: object - create: - description: Create represents a creation operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - delete: - description: Delete represents a deletion operation. - properties: - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labelSelector: - description: Label selector to match objects to - delete - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe - collector to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the - operation. - type: string - error: - description: |- - Error represents the expected errors for this test step. If any of these errors occur, the test - will consider them as expected; otherwise, they will be treated as test failures. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - events: - description: Events determines the events collector to - execute. - properties: - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - patch: - description: Patch represents a patch operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - podLogs: - description: PodLogs determines the pod logs collector - to execute. - properties: - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - update: - description: Update represents an update operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - wait: - description: Wait determines the resource wait collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition - to wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for - waiting on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path - condition to wait for. - properties: - path: - description: Path defines the json path to - wait for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - - value - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - type: array - name: - description: Name of the step. - type: string - skipDelete: - description: SkipDelete determines whether the resources created - by the step should be deleted after the test step is executed. - type: boolean - template: - description: Template determines whether resources should be - considered for templating. - type: boolean - timeouts: - description: Timeouts for the test step. Overrides the global - timeouts set in the Configuration and the timeouts eventually - set in the Test. - properties: - apply: - description: Apply defines the timeout for the apply operation - type: string - assert: - description: Assert defines the timeout for the assert operation - type: string - cleanup: - description: Cleanup defines the timeout for the cleanup - operation - type: string - delete: - description: Delete defines the timeout for the delete operation - type: string - error: - description: Error defines the timeout for the error operation - type: string - exec: - description: Exec defines the timeout for exec operations - type: string - type: object - try: - description: Try defines what the step will try to execute. - items: - description: TryOperation defines operation elements. - properties: - apply: - description: |- - Apply represents resources that should be applied for this test step. This can include things - like configuration settings or any other resources that need to be available during the test. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - assert: - description: Assert represents an assertion to be made. - It checks whether the conditions specified in the assertion - hold true. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - bindings: - description: Bindings defines additional binding key/values. - items: - description: Binding represents a key/value set as a - binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - cluster: - description: Cluster defines the target cluster (default - cluster will be used if not specified and/or overridden). - type: string - clusters: - additionalProperties: - description: Cluster defines cluster config and context. - properties: - context: - description: Context is the name of the context - to use. - type: string - kubeconfig: - description: Kubeconfig is the path to the referenced - file. - type: string - required: - - kubeconfig - type: object - description: Clusters holds a registry to clusters to - support multi-cluster tests. - type: object - command: - description: Command defines a command to run. - properties: - args: - description: Args is the command arguments. - items: - type: string - type: array - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - entrypoint: - description: Entrypoint is the command entry point - to run. - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - entrypoint - type: object - continueOnError: - description: |- - ContinueOnError determines whether a test should continue or not in case the operation was not successful. - Even if the test continues executing, it will still be reported as failed. - type: boolean - create: - description: Create represents a creation operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - delete: - description: Delete represents a deletion operation. - properties: - deletionPropagationPolicy: - description: |- - DeletionPropagationPolicy decides if a deletion will propagate to the dependents of - the object, and how the garbage collector will handle the propagation. - Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep. - enum: - - Orphan - - Background - - Foreground - type: string - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - ref: - description: Ref determines objects to be deleted. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - labelSelector: - description: Label selector to match objects to - delete - properties: - matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that - the selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - required: - - apiVersion - - kind - type: object - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - describe: - description: Describe determines the resource describe - collector to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - showEvents: - description: Show Events indicates whether to include - related events. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - description: - description: Description contains a description of the - operation. - type: string - error: - description: |- - Error represents the expected errors for this test step. If any of these errors occur, the test - will consider them as expected; otherwise, they will be treated as test failures. - properties: - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Check provides a check used in assertions. - type: object - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - events: - description: Events determines the events collector to - execute. - properties: - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - get: - description: Get determines the resource get collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - kind - type: object - outputs: - description: Outputs defines output bindings. - items: - description: Output represents an output binding with - a match to determine if the binding must be considered - or not. - properties: - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - patch: - description: Patch represents a patch operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - podLogs: - description: PodLogs determines the pod logs collector - to execute. - properties: - container: - description: Container in pod to get logs from else - --all-containers is used. - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - tail: - description: |- - Tail is the number of last lines to collect from pods. If omitted or zero, - then the default is 10 if you use a selector, or -1 (all) if you use a pod name. - This matches default behavior of `kubectl logs`. - type: integer - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - script: - description: Script defines a script to run. - properties: - check: - description: Check is an assertion tree to validate - the operation outcome. - type: object - x-kubernetes-preserve-unknown-fields: true - content: - description: Content defines a shell script (run with - "sh -c ..."). - type: string - env: - description: Env defines additional environment variables. - items: - description: Binding represents a key/value set - as a binding in an executing test. - properties: - name: - description: Name the name of the binding. - pattern: ^(?:\w+|\(.+\))$ - type: string - value: - description: Value value of the binding. - x-kubernetes-preserve-unknown-fields: true - required: - - name - - value - type: object - type: array - skipLogOutput: - description: SkipLogOutput removes the output from - the command. Useful for sensitive logs or to reduce - noise. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - sleep: - description: Sleep defines zzzz. - properties: - duration: - description: Duration is the delay used for sleeping. - type: string - required: - - duration - type: object - update: - description: Update represents an update operation. - properties: - dryRun: - description: DryRun determines whether the file should - be applied in dry run mode. - type: boolean - expect: - description: Expect defines a list of matched checks - to validate the operation outcome. - items: - description: |- - Expectation represents a check to be applied on the result of an operation - with a match filter to determine if the verification should be considered. - properties: - check: - description: Check defines the verification - statement. - type: object - x-kubernetes-preserve-unknown-fields: true - match: - description: Match defines the matching statement. - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - check - type: object - type: array - file: - description: |- - File is the path to the referenced file. This can be a direct path to a file - or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML - files within the "manifest" directory. - type: string - resource: - description: Resource provides a resource to be applied. - type: object - x-kubernetes-embedded-resource: true - x-kubernetes-preserve-unknown-fields: true - template: - description: Template determines whether resources - should be considered for templating. - type: boolean - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - type: object - wait: - description: Wait determines the resource wait collector - to execute. - properties: - apiVersion: - description: API version of the referent. - type: string - for: - description: WaitFor specifies the condition to wait - for. - properties: - condition: - description: Condition specifies the condition - to wait for. - properties: - name: - description: Name defines the specific condition - to wait for, e.g., "Available", "Ready". - type: string - value: - description: Value defines the specific condition - status to wait for, e.g., "True", "False". - type: string - required: - - name - type: object - deletion: - description: Deletion specifies parameters for - waiting on a resource's deletion. - type: object - jsonPath: - description: JsonPath specifies the json path - condition to wait for. - properties: - path: - description: Path defines the json path to - wait for, e.g. '{.status.phase}'. - type: string - value: - description: Value defines the expected value - to wait for, e.g., "Running". - type: string - required: - - path - - value - type: object - type: object - format: - description: Format determines the output format (json - or yaml). - pattern: ^(?:json|yaml|\(.+\))$ - type: string - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - namespace: - description: |- - Namespace of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ - type: string - selector: - description: Selector defines labels selector. - type: string - timeout: - description: Timeout for the operation. Overrides - the global timeout set in the Configuration. - type: string - required: - - apiVersion - - for - - kind - type: object - type: object - minItems: 1 - type: array - required: - - try - type: object - type: array - templating: - default: {} - description: Templating contains the templating config. - properties: - enabled: - default: true - description: Enabled determines whether resources should be considered - for templating. - type: boolean - type: object - timeouts: - default: {} - description: Timeouts for the test. Overrides the global timeouts - set in the Configuration on a per operation basis. - properties: - apply: - description: Apply defines the timeout for the apply operation - type: string - assert: - description: Assert defines the timeout for the assert operation - type: string - cleanup: - description: Cleanup defines the timeout for the cleanup operation - type: string - delete: - description: Delete defines the timeout for the delete operation - type: string - error: - description: Error defines the timeout for the error operation - type: string - exec: - description: Exec defines the timeout for exec operations - type: string - type: object - required: - - steps - type: object - required: - - spec - type: object - served: true - storage: false diff --git a/pkg/data/data_test.go b/pkg/data/data_test.go index d449cb13f..eb8335f43 100644 --- a/pkg/data/data_test.go +++ b/pkg/data/data_test.go @@ -46,7 +46,6 @@ func TestSchemas(t *testing.T) { "configuration-chainsaw-v1alpha2.json", "steptemplate-chainsaw-v1alpha1.json", "test-chainsaw-v1alpha1.json", - "test-chainsaw-v1alpha2.json", } for _, file := range files { file, err := fs.Stat(data, file) diff --git a/pkg/data/schemas/json/test-chainsaw-v1alpha2.json b/pkg/data/schemas/json/test-chainsaw-v1alpha2.json deleted file mode 100644 index 0e3ea9ea0..000000000 --- a/pkg/data/schemas/json/test-chainsaw-v1alpha2.json +++ /dev/null @@ -1,11686 +0,0 @@ -{ - "description": "Test is the resource that contains a test definition.", - "type": "object", - "required": [ - "spec" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": [ - "string", - "null" - ], - "enum": [ - "chainsaw.kyverno.io/v1alpha2" - ] - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": [ - "string", - "null" - ], - "enum": [ - "Test" - ] - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - }, - "spec": { - "description": "Test spec.", - "type": [ - "object", - "null" - ], - "required": [ - "steps" - ], - "properties": { - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cleanup": { - "description": "Cleanup contains cleanup configuration.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "delayBeforeCleanup": { - "description": "DelayBeforeCleanup adds a delay between the time a test ends and the time cleanup starts.", - "type": [ - "string", - "null" - ] - }, - "skipDelete": { - "description": "If set, do not delete the resources after running a test.", - "type": [ - "boolean", - "null" - ] - } - }, - "additionalProperties": false - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "deletion": { - "description": "Deletion contains the global deletion configuration.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "propagation": { - "description": "Propagation decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.", - "type": [ - "string", - "null" - ], - "default": "Background", - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the test.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error contains the global error configuration.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "catch": { - "description": "Catch defines what the tests steps will execute when an error happens.\nThis will be combined with catch handlers defined at the test and step levels.", - "type": [ - "array", - "null" - ], - "items": { - "description": "CatchFinally defines actions to be executed in catch, finally and cleanup blocks.", - "type": [ - "object", - "null" - ], - "oneOf": [ - { - "required": [ - "command" - ] - }, - { - "required": [ - "delete" - ] - }, - { - "required": [ - "describe" - ] - }, - { - "required": [ - "events" - ] - }, - { - "required": [ - "get" - ] - }, - { - "required": [ - "podLogs" - ] - }, - { - "required": [ - "script" - ] - }, - { - "required": [ - "sleep" - ] - }, - { - "required": [ - "wait" - ] - } - ], - "properties": { - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - }, - "workDir": { - "description": "WorkDir is the working directory for command.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "not": { - "required": [ - "file", - "ref" - ] - }, - "properties": { - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labels": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - }, - "workDir": { - "description": "WorkDir is the working directory for script.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "not": { - "required": [ - "name", - "selector" - ] - }, - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "cluster": { - "description": "Cluster defines the target cluster (will be inherited if not specified).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "execution": { - "description": "Execution contains tests execution configuration.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "concurrent": { - "description": "Concurrent determines whether the test should run concurrently with other tests.", - "type": [ - "boolean", - "null" - ], - "default": true - }, - "skip": { - "description": "Skip determines whether the test should skipped.", - "type": [ - "boolean", - "null" - ] - }, - "terminationGracePeriod": { - "description": "TerminationGracePeriod forces the termination grace period on pods, statefulsets, daemonsets and deployments.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "namespace": { - "description": "Namespace contains properties for the namespace to use for tests.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "name": { - "description": "Name defines the namespace to use for tests.\nIf not specified, every test will execute in a random ephemeral namespace\nunless the namespace is overridden in a the test spec.", - "type": [ - "string", - "null" - ] - }, - "template": { - "description": "Template defines a template to create the test namespace.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - }, - "steps": { - "description": "Steps defining the test.", - "type": "array", - "items": { - "description": "TestStep contains the test step definition used in a test spec.", - "type": [ - "object", - "null" - ], - "required": [ - "try" - ], - "properties": { - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "catch": { - "description": "Catch defines what the step will execute when an error happens.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Operation defines operation elements.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply represents resources that should be applied for this test step. This can include things\nlike configuration settings or any other resources that need to be available during the test.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "assert": { - "description": "Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "create": { - "description": "Create represents a creation operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "properties": { - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labelSelector": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": [ - "array", - "null" - ], - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", - "type": [ - "object", - "null" - ], - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - }, - "x-kubernetes-list-type": "atomic" - } - }, - "additionalProperties": false - }, - "x-kubernetes-list-type": "atomic" - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error represents the expected errors for this test step. If any of these errors occur, the test\nwill consider them as expected; otherwise, they will be treated as test failures.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "patch": { - "description": "Patch represents a patch operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "update": { - "description": "Update represents an update operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path", - "value" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "cleanup": { - "description": "Cleanup defines what will be executed after the test is terminated.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Operation defines operation elements.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply represents resources that should be applied for this test step. This can include things\nlike configuration settings or any other resources that need to be available during the test.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "assert": { - "description": "Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "create": { - "description": "Create represents a creation operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "properties": { - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labelSelector": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": [ - "array", - "null" - ], - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", - "type": [ - "object", - "null" - ], - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - }, - "x-kubernetes-list-type": "atomic" - } - }, - "additionalProperties": false - }, - "x-kubernetes-list-type": "atomic" - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error represents the expected errors for this test step. If any of these errors occur, the test\nwill consider them as expected; otherwise, they will be treated as test failures.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "patch": { - "description": "Patch represents a patch operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "update": { - "description": "Update represents an update operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path", - "value" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in both the Configuration and the Test.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "description": { - "description": "Description contains a description of the test step.", - "type": [ - "string", - "null" - ] - }, - "finally": { - "description": "Finally defines what the step will execute after the step is terminated.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Operation defines operation elements.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply represents resources that should be applied for this test step. This can include things\nlike configuration settings or any other resources that need to be available during the test.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "assert": { - "description": "Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "create": { - "description": "Create represents a creation operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "properties": { - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labelSelector": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": [ - "array", - "null" - ], - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", - "type": [ - "object", - "null" - ], - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - }, - "x-kubernetes-list-type": "atomic" - } - }, - "additionalProperties": false - }, - "x-kubernetes-list-type": "atomic" - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error represents the expected errors for this test step. If any of these errors occur, the test\nwill consider them as expected; otherwise, they will be treated as test failures.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "patch": { - "description": "Patch represents a patch operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "update": { - "description": "Update represents an update operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path", - "value" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "name": { - "description": "Name of the step.", - "type": [ - "string", - "null" - ] - }, - "skipDelete": { - "description": "SkipDelete determines whether the resources created by the step should be deleted after the test step is executed.", - "type": [ - "boolean", - "null" - ] - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeouts": { - "description": "Timeouts for the test step. Overrides the global timeouts set in the Configuration and the timeouts eventually set in the Test.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply defines the timeout for the apply operation", - "type": [ - "string", - "null" - ] - }, - "assert": { - "description": "Assert defines the timeout for the assert operation", - "type": [ - "string", - "null" - ] - }, - "cleanup": { - "description": "Cleanup defines the timeout for the cleanup operation", - "type": [ - "string", - "null" - ] - }, - "delete": { - "description": "Delete defines the timeout for the delete operation", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error defines the timeout for the error operation", - "type": [ - "string", - "null" - ] - }, - "exec": { - "description": "Exec defines the timeout for exec operations", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "try": { - "description": "Try defines what the step will try to execute.", - "type": "array", - "minItems": 1, - "items": { - "description": "TryOperation defines operation elements.", - "type": [ - "object", - "null" - ], - "properties": { - "apply": { - "description": "Apply represents resources that should be applied for this test step. This can include things\nlike configuration settings or any other resources that need to be available during the test.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "assert": { - "description": "Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "bindings": { - "description": "Bindings defines additional binding key/values.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "cluster": { - "description": "Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).", - "type": [ - "string", - "null" - ] - }, - "clusters": { - "description": "Clusters holds a registry to clusters to support multi-cluster tests.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "description": "Cluster defines cluster config and context.", - "type": [ - "object", - "null" - ], - "required": [ - "kubeconfig" - ], - "properties": { - "context": { - "description": "Context is the name of the context to use.", - "type": [ - "string", - "null" - ] - }, - "kubeconfig": { - "description": "Kubeconfig is the path to the referenced file.", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "command": { - "description": "Command defines a command to run.", - "type": [ - "object", - "null" - ], - "required": [ - "entrypoint" - ], - "properties": { - "args": { - "description": "Args is the command arguments.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - } - }, - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "entrypoint": { - "description": "Entrypoint is the command entry point to run.", - "type": "string" - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "continueOnError": { - "description": "ContinueOnError determines whether a test should continue or not in case the operation was not successful.\nEven if the test continues executing, it will still be reported as failed.", - "type": [ - "boolean", - "null" - ] - }, - "create": { - "description": "Create represents a creation operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "delete": { - "description": "Delete represents a deletion operation.", - "type": [ - "object", - "null" - ], - "properties": { - "deletionPropagationPolicy": { - "description": "DeletionPropagationPolicy decides if a deletion will propagate to the dependents of\nthe object, and how the garbage collector will handle the propagation.\nOverrides the deletion propagation policy set in the Configuration, the Test and the TestStep.", - "type": [ - "string", - "null" - ], - "enum": [ - "Orphan", - "Background", - "Foreground" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "ref": { - "description": "Ref determines objects to be deleted.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "labelSelector": { - "description": "Label selector to match objects to delete", - "type": [ - "object", - "null" - ], - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": [ - "array", - "null" - ], - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", - "type": [ - "object", - "null" - ], - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "key is the label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", - "type": "string" - }, - "values": { - "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ] - }, - "x-kubernetes-list-type": "atomic" - } - }, - "additionalProperties": false - }, - "x-kubernetes-list-type": "atomic" - }, - "matchLabels": { - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ] - } - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "describe": { - "description": "Describe determines the resource describe collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "showEvents": { - "description": "Show Events indicates whether to include related events.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "description": { - "description": "Description contains a description of the operation.", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error represents the expected errors for this test step. If any of these errors occur, the test\nwill consider them as expected; otherwise, they will be treated as test failures.", - "type": [ - "object", - "null" - ], - "properties": { - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Check provides a check used in assertions.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "events": { - "description": "Events determines the events collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "get": { - "description": "Get determines the resource get collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "outputs": { - "description": "Outputs defines output bindings.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Output represents an output binding with a match to determine if the binding must be considered or not.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "patch": { - "description": "Patch represents a patch operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "podLogs": { - "description": "PodLogs determines the pod logs collector to execute.", - "type": [ - "object", - "null" - ], - "properties": { - "container": { - "description": "Container in pod to get logs from else --all-containers is used.", - "type": [ - "string", - "null" - ] - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "tail": { - "description": "Tail is the number of last lines to collect from pods. If omitted or zero,\nthen the default is 10 if you use a selector, or -1 (all) if you use a pod name.\nThis matches default behavior of `kubectl logs`.", - "type": [ - "integer", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "script": { - "description": "Script defines a script to run.", - "type": [ - "object", - "null" - ], - "properties": { - "check": { - "description": "Check is an assertion tree to validate the operation outcome.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - }, - "content": { - "description": "Content defines a shell script (run with \"sh -c ...\").", - "type": [ - "string", - "null" - ] - }, - "env": { - "description": "Env defines additional environment variables.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Binding represents a key/value set as a binding in an executing test.", - "type": [ - "object", - "null" - ], - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "Name the name of the binding.", - "type": "string", - "pattern": "^(?:\\w+|\\(.+\\))$" - }, - "value": { - "description": "Value value of the binding.", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "skipLogOutput": { - "description": "SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "sleep": { - "description": "Sleep defines zzzz.", - "type": [ - "object", - "null" - ], - "required": [ - "duration" - ], - "properties": { - "duration": { - "description": "Duration is the delay used for sleeping.", - "type": "string" - } - }, - "additionalProperties": false - }, - "update": { - "description": "Update represents an update operation.", - "type": [ - "object", - "null" - ], - "properties": { - "dryRun": { - "description": "DryRun determines whether the file should be applied in dry run mode.", - "type": [ - "boolean", - "null" - ] - }, - "expect": { - "description": "Expect defines a list of matched checks to validate the operation outcome.", - "type": [ - "array", - "null" - ], - "items": { - "description": "Expectation represents a check to be applied on the result of an operation\nwith a match filter to determine if the verification should be considered.", - "type": [ - "object", - "null" - ], - "required": [ - "check" - ], - "properties": { - "check": { - "description": "Check defines the verification statement.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "match": { - "description": "Match defines the matching statement.", - "type": [ - "object", - "null" - ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "additionalProperties": false - } - }, - "file": { - "description": "File is the path to the referenced file. This can be a direct path to a file\nor an expression that matches multiple files, such as \"manifest/*.yaml\" for all YAML\nfiles within the \"manifest\" directory.", - "type": [ - "string", - "null" - ] - }, - "resource": { - "description": "Resource provides a resource to be applied.", - "type": [ - "object", - "null" - ], - "required": [ - "kind", - "apiVersion" - ], - "properties": { - "apiVersion": { - "description": "apiVersion defines the versioned schema of this representation of an object. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "kind is a string value representing the type of this object. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": [ - "object", - "null" - ], - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "creationTimestamp": { - "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "deletionGracePeriodSeconds": { - "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "deletionTimestamp": { - "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - }, - "finalizers": { - "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string", - "null" - ], - "default": "" - }, - "x-kubernetes-patch-strategy": "merge" - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": [ - "string", - "null" - ] - }, - "generation": { - "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", - "type": [ - "integer", - "null" - ], - "format": "int64" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels", - "type": [ - "object", - "null" - ], - "additionalProperties": { - "type": [ - "string", - "null" - ], - "default": "" - } - }, - "managedFields": { - "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", - "type": [ - "object", - "null" - ], - "properties": { - "apiVersion": { - "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", - "type": [ - "string", - "null" - ] - }, - "fieldsType": { - "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", - "type": [ - "string", - "null" - ] - }, - "fieldsV1": { - "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", - "allOf": [ - { - "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", - "type": [ - "object", - "null" - ] - } - ] - }, - "manager": { - "description": "Manager is an identifier of the workflow managing these fields.", - "type": [ - "string", - "null" - ] - }, - "operation": { - "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", - "type": [ - "string", - "null" - ] - }, - "subresource": { - "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", - "type": [ - "string", - "null" - ] - }, - "time": { - "description": "Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.", - "allOf": [ - { - "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", - "type": [ - "string", - "null" - ], - "format": "date-time" - } - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces", - "type": [ - "string", - "null" - ] - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": [ - "array", - "null" - ], - "items": { - "default": {}, - "allOf": [ - { - "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "kind", - "name", - "uid" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string", - "default": "" - }, - "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", - "type": [ - "boolean", - "null" - ] - }, - "controller": { - "description": "If true, this reference points to the managing controller.", - "type": [ - "boolean", - "null" - ] - }, - "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string", - "default": "" - }, - "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names", - "type": "string", - "default": "" - }, - "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": "string", - "default": "" - } - }, - "x-kubernetes-map-type": "atomic", - "additionalProperties": false - } - ] - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - }, - "resourceVersion": { - "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", - "type": [ - "string", - "null" - ] - }, - "selfLink": { - "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", - "type": [ - "string", - "null" - ] - }, - "uid": { - "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - ] - } - }, - "x-kubernetes-embedded-resource": true, - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "Template determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "wait": { - "description": "Wait determines the resource wait collector to execute.", - "type": [ - "object", - "null" - ], - "required": [ - "apiVersion", - "for", - "kind" - ], - "properties": { - "apiVersion": { - "description": "API version of the referent.", - "type": "string" - }, - "for": { - "description": "WaitFor specifies the condition to wait for.", - "type": "object", - "properties": { - "condition": { - "description": "Condition specifies the condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name defines the specific condition to wait for, e.g., \"Available\", \"Ready\".", - "type": "string" - }, - "value": { - "description": "Value defines the specific condition status to wait for, e.g., \"True\", \"False\".", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - }, - "deletion": { - "description": "Deletion specifies parameters for waiting on a resource's deletion.", - "type": [ - "object", - "null" - ] - }, - "jsonPath": { - "description": "JsonPath specifies the json path condition to wait for.", - "type": [ - "object", - "null" - ], - "required": [ - "path", - "value" - ], - "properties": { - "path": { - "description": "Path defines the json path to wait for, e.g. '{.status.phase}'.", - "type": "string" - }, - "value": { - "description": "Value defines the expected value to wait for, e.g., \"Running\".", - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "format": { - "description": "Format determines the output format (json or yaml).", - "type": [ - "string", - "null" - ], - "pattern": "^(?:json|yaml|\\(.+\\))$" - }, - "kind": { - "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "name": { - "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": [ - "string", - "null" - ] - }, - "namespace": { - "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", - "type": [ - "string", - "null" - ] - }, - "selector": { - "description": "Selector defines labels selector.", - "type": [ - "string", - "null" - ] - }, - "timeout": { - "description": "Timeout for the operation. Overrides the global timeout set in the Configuration.", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - } - }, - "templating": { - "description": "Templating contains the templating config.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "enabled": { - "description": "Enabled determines whether resources should be considered for templating.", - "type": [ - "boolean", - "null" - ], - "default": true - } - }, - "additionalProperties": false - }, - "timeouts": { - "description": "Timeouts for the test. Overrides the global timeouts set in the Configuration on a per operation basis.", - "type": [ - "object", - "null" - ], - "default": {}, - "properties": { - "apply": { - "description": "Apply defines the timeout for the apply operation", - "type": [ - "string", - "null" - ] - }, - "assert": { - "description": "Assert defines the timeout for the assert operation", - "type": [ - "string", - "null" - ] - }, - "cleanup": { - "description": "Cleanup defines the timeout for the cleanup operation", - "type": [ - "string", - "null" - ] - }, - "delete": { - "description": "Delete defines the timeout for the delete operation", - "type": [ - "string", - "null" - ] - }, - "error": { - "description": "Error defines the timeout for the error operation", - "type": [ - "string", - "null" - ] - }, - "exec": { - "description": "Exec defines the timeout for exec operations", - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "x-kubernetes-group-version-kind": [ - { - "group": "chainsaw.kyverno.io", - "kind": "Test", - "version": "v1alpha2" - } - ], - "additionalProperties": false, - "$schema": "http://json-schema.org/schema#" -} \ No newline at end of file diff --git a/website/docs/reference/apis/chainsaw.v1alpha2.md b/website/docs/reference/apis/chainsaw.v1alpha2.md index cd38c6074..e1e7e3d0a 100644 --- a/website/docs/reference/apis/chainsaw.v1alpha2.md +++ b/website/docs/reference/apis/chainsaw.v1alpha2.md @@ -11,7 +11,6 @@ auto_generated: true - [Configuration](#chainsaw-kyverno-io-v1alpha2-Configuration) -- [Test](#chainsaw-kyverno-io-v1alpha2-Test) ## Configuration {#chainsaw-kyverno-io-v1alpha2-Configuration} @@ -25,225 +24,11 @@ auto_generated: true | `metadata` | [`meta/v1.ObjectMeta`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#objectmeta-v1-meta) | | |

Standard object's metadata.

| | `spec` | [`ConfigurationSpec`](#chainsaw-kyverno-io-v1alpha2-ConfigurationSpec) | :white_check_mark: | |

Configuration spec.

| -## Test {#chainsaw-kyverno-io-v1alpha2-Test} - -

Test is the resource that contains a test definition.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `apiVersion` | `string` | :white_check_mark: | | `chainsaw.kyverno.io/v1alpha2` | -| `kind` | `string` | :white_check_mark: | | `Test` | -| `metadata` | [`meta/v1.ObjectMeta`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#objectmeta-v1-meta) | | |

Standard object's metadata.

| -| `spec` | [`TestSpec`](#chainsaw-kyverno-io-v1alpha2-TestSpec) | :white_check_mark: | |

Test spec.

| - -## ActionCheck {#chainsaw-kyverno-io-v1alpha2-ActionCheck} - -**Appears in:** - -- [Command](#chainsaw-kyverno-io-v1alpha2-Command) -- [Script](#chainsaw-kyverno-io-v1alpha2-Script) - -

ActionCheck contains check for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `check` | `policy/v1alpha1.Any` | | |

Check is an assertion tree to validate the operation outcome.

| - -## ActionCheckRef {#chainsaw-kyverno-io-v1alpha2-ActionCheckRef} - -**Appears in:** - -- [Assert](#chainsaw-kyverno-io-v1alpha2-Assert) -- [Error](#chainsaw-kyverno-io-v1alpha2-Error) - -

ActionCheckRef contains check reference options for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `FileRef` | [`FileRef`](#chainsaw-kyverno-io-v1alpha2-FileRef) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `resource` | `policy/v1alpha1.Any` | | |

Check provides a check used in assertions.

| -| `template` | `bool` | | |

Template determines whether resources should be considered for templating.

| - -## ActionDryRun {#chainsaw-kyverno-io-v1alpha2-ActionDryRun} - -**Appears in:** - -- [Apply](#chainsaw-kyverno-io-v1alpha2-Apply) -- [Create](#chainsaw-kyverno-io-v1alpha2-Create) -- [Patch](#chainsaw-kyverno-io-v1alpha2-Patch) -- [Update](#chainsaw-kyverno-io-v1alpha2-Update) - -

ActionDryRun contains dry run options for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `dryRun` | `bool` | | |

DryRun determines whether the file should be applied in dry run mode.

| - -## ActionEnv {#chainsaw-kyverno-io-v1alpha2-ActionEnv} - -**Appears in:** - -- [Command](#chainsaw-kyverno-io-v1alpha2-Command) -- [Script](#chainsaw-kyverno-io-v1alpha2-Script) - -

ActionEnv contains environment options for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `env` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |

Env defines additional environment variables.

| -| `skipLogOutput` | `bool` | | |

SkipLogOutput removes the output from the command. Useful for sensitive logs or to reduce noise.

| - -## ActionExpectations {#chainsaw-kyverno-io-v1alpha2-ActionExpectations} - -**Appears in:** - -- [Apply](#chainsaw-kyverno-io-v1alpha2-Apply) -- [Create](#chainsaw-kyverno-io-v1alpha2-Create) -- [Delete](#chainsaw-kyverno-io-v1alpha2-Delete) -- [Patch](#chainsaw-kyverno-io-v1alpha2-Patch) -- [Update](#chainsaw-kyverno-io-v1alpha2-Update) - -

ActionExpectations contains expectations for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `expect` | [`[]Expectation`](#chainsaw-kyverno-io-v1alpha1-Expectation) | | |

Expect defines a list of matched checks to validate the operation outcome.

| - -## ActionFormat {#chainsaw-kyverno-io-v1alpha2-ActionFormat} - -**Appears in:** - -- [Events](#chainsaw-kyverno-io-v1alpha2-Events) -- [Get](#chainsaw-kyverno-io-v1alpha2-Get) -- [Wait](#chainsaw-kyverno-io-v1alpha2-Wait) - -

ActionFormat contains format for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `format` | [`Format`](#chainsaw-kyverno-io-v1alpha1-Format) | | |

Format determines the output format (json or yaml).

| - -## ActionObject {#chainsaw-kyverno-io-v1alpha2-ActionObject} - -**Appears in:** - -- [Describe](#chainsaw-kyverno-io-v1alpha2-Describe) -- [Get](#chainsaw-kyverno-io-v1alpha2-Get) -- [Wait](#chainsaw-kyverno-io-v1alpha2-Wait) - -

ActionObject contains object selector options for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ObjectType` | [`ObjectType`](#chainsaw-kyverno-io-v1alpha1-ObjectType) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionObjectSelector` | [`ActionObjectSelector`](#chainsaw-kyverno-io-v1alpha2-ActionObjectSelector) | :white_check_mark: | :white_check_mark: | *No description provided.* | - -## ActionObjectSelector {#chainsaw-kyverno-io-v1alpha2-ActionObjectSelector} - -**Appears in:** - -- [ActionObject](#chainsaw-kyverno-io-v1alpha2-ActionObject) -- [Events](#chainsaw-kyverno-io-v1alpha2-Events) -- [PodLogs](#chainsaw-kyverno-io-v1alpha2-PodLogs) - -

ActionObjectSelector contains object selector options for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ObjectName` | [`ObjectName`](#chainsaw-kyverno-io-v1alpha1-ObjectName) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `selector` | `string` | | |

Selector defines labels selector.

| - -## ActionResourceRef {#chainsaw-kyverno-io-v1alpha2-ActionResourceRef} - -**Appears in:** - -- [Apply](#chainsaw-kyverno-io-v1alpha2-Apply) -- [Create](#chainsaw-kyverno-io-v1alpha2-Create) -- [Patch](#chainsaw-kyverno-io-v1alpha2-Patch) -- [Update](#chainsaw-kyverno-io-v1alpha2-Update) - -

ActionResourceRef contains resource reference options for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `FileRef` | [`FileRef`](#chainsaw-kyverno-io-v1alpha2-FileRef) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `resource` | [`meta/v1/unstructured.Unstructured`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#unstructured-unstructured-v1) | | |

Resource provides a resource to be applied.

| -| `template` | `bool` | | |

Template determines whether resources should be considered for templating.

| - -## ActionTimeout {#chainsaw-kyverno-io-v1alpha2-ActionTimeout} - -**Appears in:** - -- [Apply](#chainsaw-kyverno-io-v1alpha2-Apply) -- [Assert](#chainsaw-kyverno-io-v1alpha2-Assert) -- [Command](#chainsaw-kyverno-io-v1alpha2-Command) -- [Create](#chainsaw-kyverno-io-v1alpha2-Create) -- [Delete](#chainsaw-kyverno-io-v1alpha2-Delete) -- [Describe](#chainsaw-kyverno-io-v1alpha2-Describe) -- [Error](#chainsaw-kyverno-io-v1alpha2-Error) -- [Events](#chainsaw-kyverno-io-v1alpha2-Events) -- [Get](#chainsaw-kyverno-io-v1alpha2-Get) -- [Patch](#chainsaw-kyverno-io-v1alpha2-Patch) -- [PodLogs](#chainsaw-kyverno-io-v1alpha2-PodLogs) -- [Script](#chainsaw-kyverno-io-v1alpha2-Script) -- [Update](#chainsaw-kyverno-io-v1alpha2-Update) -- [Wait](#chainsaw-kyverno-io-v1alpha2-Wait) - -

ActionTimeout contains timeout options for an action.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `timeout` | [`meta/v1.Duration`](https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration) | | |

Timeout for the operation. Overrides the global timeout set in the Configuration.

| - -## Apply {#chainsaw-kyverno-io-v1alpha2-Apply} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Apply represents a set of configurations or resources that -should be applied during testing.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionDryRun` | [`ActionDryRun`](#chainsaw-kyverno-io-v1alpha2-ActionDryRun) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionExpectations` | [`ActionExpectations`](#chainsaw-kyverno-io-v1alpha2-ActionExpectations) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionResourceRef` | [`ActionResourceRef`](#chainsaw-kyverno-io-v1alpha2-ActionResourceRef) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | - -## Assert {#chainsaw-kyverno-io-v1alpha2-Assert} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Assert represents a test condition that is expected to hold true -during the testing process.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionCheckRef` | [`ActionCheckRef`](#chainsaw-kyverno-io-v1alpha2-ActionCheckRef) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | - ## CleanupOptions {#chainsaw-kyverno-io-v1alpha2-CleanupOptions} **Appears in:** - [ConfigurationSpec](#chainsaw-kyverno-io-v1alpha2-ConfigurationSpec) -- [TestSpec](#chainsaw-kyverno-io-v1alpha2-TestSpec)

CleanupOptions contains the configuration used for cleaning up resources.

@@ -253,23 +38,6 @@ during the testing process.

| `skipDelete` | `bool` | | |

If set, do not delete the resources after running a test.

| | `delayBeforeCleanup` | [`meta/v1.Duration`](https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration) | | |

DelayBeforeCleanup adds a delay between the time a test ends and the time cleanup starts.

| -## Command {#chainsaw-kyverno-io-v1alpha2-Command} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Command describes a command to run as a part of a test step.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionCheck` | [`ActionCheck`](#chainsaw-kyverno-io-v1alpha2-ActionCheck) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionEnv` | [`ActionEnv`](#chainsaw-kyverno-io-v1alpha2-ActionEnv) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `entrypoint` | `string` | :white_check_mark: | |

Entrypoint is the command entry point to run.

| -| `args` | `[]string` | | |

Args is the command arguments.

| - ## ConfigurationSpec {#chainsaw-kyverno-io-v1alpha2-ConfigurationSpec} **Appears in:** @@ -292,47 +60,11 @@ during the testing process.

| `templating` | [`TemplatingOptions`](#chainsaw-kyverno-io-v1alpha2-TemplatingOptions) | | |

Templating contains the templating config.

| | `timeouts` | [`DefaultTimeouts`](#chainsaw-kyverno-io-v1alpha1-DefaultTimeouts) | | |

Global timeouts configuration. Applies to all tests/test steps if not overridden.

| -## Create {#chainsaw-kyverno-io-v1alpha2-Create} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Create represents a set of resources that should be created. -If a resource already exists in the cluster it will fail.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionDryRun` | [`ActionDryRun`](#chainsaw-kyverno-io-v1alpha2-ActionDryRun) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionExpectations` | [`ActionExpectations`](#chainsaw-kyverno-io-v1alpha2-ActionExpectations) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionResourceRef` | [`ActionResourceRef`](#chainsaw-kyverno-io-v1alpha2-ActionResourceRef) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | - -## Delete {#chainsaw-kyverno-io-v1alpha2-Delete} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Delete is a reference to an object that should be deleted

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionExpectations` | [`ActionExpectations`](#chainsaw-kyverno-io-v1alpha2-ActionExpectations) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `template` | `bool` | | |

Template determines whether resources should be considered for templating.

| -| `file` | `string` | | |

File is the path to the referenced file. This can be a direct path to a file or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML files within the "manifest" directory.

| -| `ref` | [`ObjectReference`](#chainsaw-kyverno-io-v1alpha2-ObjectReference) | | |

Ref determines objects to be deleted.

| -| `deletionPropagationPolicy` | [`meta/v1.DeletionPropagation`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#deletionpropagation-v1-meta) | | |

DeletionPropagationPolicy decides if a deletion will propagate to the dependents of the object, and how the garbage collector will handle the propagation. Overrides the deletion propagation policy set in the Configuration, the Test and the TestStep.

| - ## DeletionOptions {#chainsaw-kyverno-io-v1alpha2-DeletionOptions} **Appears in:** - [ConfigurationSpec](#chainsaw-kyverno-io-v1alpha2-ConfigurationSpec) -- [TestSpec](#chainsaw-kyverno-io-v1alpha2-TestSpec)

DeletionOptions contains the configuration used for deleting resources.

@@ -341,21 +73,6 @@ If a resource already exists in the cluster it will fail.

|---|---|---|---|---| | `propagation` | [`meta/v1.DeletionPropagation`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#deletionpropagation-v1-meta) | | |

Propagation decides if a deletion will propagate to the dependents of the object, and how the garbage collector will handle the propagation.

| -## Describe {#chainsaw-kyverno-io-v1alpha2-Describe} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Describe defines how to describe resources.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionObject` | [`ActionObject`](#chainsaw-kyverno-io-v1alpha2-ActionObject) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `showEvents` | `bool` | | |

Show Events indicates whether to include related events.

| - ## DiscoveryOptions {#chainsaw-kyverno-io-v1alpha2-DiscoveryOptions} **Appears in:** @@ -372,27 +89,11 @@ If a resource already exists in the cluster it will fail.

| `testFile` | `string` | | |

TestFile is the name of the file containing the test to run. If no extension is provided, chainsaw will try with .yaml first and .yml if needed.

| | `fullName` | `bool` | | |

FullName makes use of the full test case folder path instead of the folder name.

| -## Error {#chainsaw-kyverno-io-v1alpha2-Error} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Error represents an anticipated error condition that may arise during testing. -Instead of treating such an error as a test failure, it acknowledges it as expected.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionCheckRef` | [`ActionCheckRef`](#chainsaw-kyverno-io-v1alpha2-ActionCheckRef) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | - ## ErrorOptions {#chainsaw-kyverno-io-v1alpha2-ErrorOptions} **Appears in:** - [ConfigurationSpec](#chainsaw-kyverno-io-v1alpha2-ConfigurationSpec) -- [TestSpec](#chainsaw-kyverno-io-v1alpha2-TestSpec)

ErrorOptions contains the global error configuration.

@@ -401,21 +102,6 @@ Instead of treating such an error as a test failure, it acknowledges it as expec |---|---|---|---|---| | `catch` | [`[]CatchFinally`](#chainsaw-kyverno-io-v1alpha1-CatchFinally) | | |

Catch defines what the tests steps will execute when an error happens. This will be combined with catch handlers defined at the test and step levels.

| -## Events {#chainsaw-kyverno-io-v1alpha2-Events} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Events defines how to collect events.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionFormat` | [`ActionFormat`](#chainsaw-kyverno-io-v1alpha2-ActionFormat) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionObjectSelector` | [`ActionObjectSelector`](#chainsaw-kyverno-io-v1alpha2-ActionObjectSelector) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | - ## ExecutionOptions {#chainsaw-kyverno-io-v1alpha2-ExecutionOptions} **Appears in:** @@ -432,41 +118,11 @@ Instead of treating such an error as a test failure, it acknowledges it as expec | `repeatCount` | `int` | | |

RepeatCount indicates how many times the tests should be executed.

| | `forceTerminationGracePeriod` | [`meta/v1.Duration`](https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration) | | |

ForceTerminationGracePeriod forces the termination grace period on pods, statefulsets, daemonsets and deployments.

| -## FileRef {#chainsaw-kyverno-io-v1alpha2-FileRef} - -**Appears in:** - -- [ActionCheckRef](#chainsaw-kyverno-io-v1alpha2-ActionCheckRef) -- [ActionResourceRef](#chainsaw-kyverno-io-v1alpha2-ActionResourceRef) - -

FileRef represents a file reference.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `file` | `string` | :white_check_mark: | |

File is the path to the referenced file. This can be a direct path to a file or an expression that matches multiple files, such as "manifest/*.yaml" for all YAML files within the "manifest" directory.

| - -## Get {#chainsaw-kyverno-io-v1alpha2-Get} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Get defines how to get resources.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionFormat` | [`ActionFormat`](#chainsaw-kyverno-io-v1alpha2-ActionFormat) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionObject` | [`ActionObject`](#chainsaw-kyverno-io-v1alpha2-ActionObject) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | - ## NamespaceOptions {#chainsaw-kyverno-io-v1alpha2-NamespaceOptions} **Appears in:** - [ConfigurationSpec](#chainsaw-kyverno-io-v1alpha2-ConfigurationSpec) -- [TestSpec](#chainsaw-kyverno-io-v1alpha2-TestSpec)

NamespaceOptions contains the configuration used to allocate a namespace for each test.

@@ -476,141 +132,6 @@ Instead of treating such an error as a test failure, it acknowledges it as expec | `name` | `string` | | |

Name defines the namespace to use for tests. If not specified, every test will execute in a random ephemeral namespace unless the namespace is overridden in a the test spec.

| | `template` | `policy/v1alpha1.Any` | | |

Template defines a template to create the test namespace.

| -## ObjectReference {#chainsaw-kyverno-io-v1alpha2-ObjectReference} - -**Appears in:** - -- [Delete](#chainsaw-kyverno-io-v1alpha2-Delete) - -

ObjectReference represents one or more objects with a specific apiVersion and kind. -For a single object name and namespace are used to identify the object. -For multiple objects use labels.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ObjectType` | [`ObjectType`](#chainsaw-kyverno-io-v1alpha1-ObjectType) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ObjectName` | [`ObjectName`](#chainsaw-kyverno-io-v1alpha1-ObjectName) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `labelSelector` | [`meta/v1.LabelSelector`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#labelselector-v1-meta) | | |

Label selector to match objects to delete

| - -## Operation {#chainsaw-kyverno-io-v1alpha2-Operation} - -**Appears in:** - -- [TestStepSpec](#chainsaw-kyverno-io-v1alpha2-TestStepSpec) -- [TryOperation](#chainsaw-kyverno-io-v1alpha2-TryOperation) - -

Operation defines operation elements.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `OperationAction` | [`OperationAction`](#chainsaw-kyverno-io-v1alpha2-OperationAction) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `OperationBindings` | [`OperationBindings`](#chainsaw-kyverno-io-v1alpha2-OperationBindings) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `OperationClusters` | [`OperationClusters`](#chainsaw-kyverno-io-v1alpha2-OperationClusters) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `OperationOutputs` | [`OperationOutputs`](#chainsaw-kyverno-io-v1alpha2-OperationOutputs) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `description` | `string` | | |

Description contains a description of the operation.

| - -## OperationAction {#chainsaw-kyverno-io-v1alpha2-OperationAction} - -**Appears in:** - -- [Operation](#chainsaw-kyverno-io-v1alpha2-Operation) - -

OperationAction defines an operation action, only one action should be specified per operation.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `apply` | [`Apply`](#chainsaw-kyverno-io-v1alpha2-Apply) | | |

Apply represents resources that should be applied for this test step. This can include things like configuration settings or any other resources that need to be available during the test.

| -| `assert` | [`Assert`](#chainsaw-kyverno-io-v1alpha2-Assert) | | |

Assert represents an assertion to be made. It checks whether the conditions specified in the assertion hold true.

| -| `command` | [`Command`](#chainsaw-kyverno-io-v1alpha2-Command) | | |

Command defines a command to run.

| -| `create` | [`Create`](#chainsaw-kyverno-io-v1alpha2-Create) | | |

Create represents a creation operation.

| -| `delete` | [`Delete`](#chainsaw-kyverno-io-v1alpha2-Delete) | | |

Delete represents a deletion operation.

| -| `describe` | [`Describe`](#chainsaw-kyverno-io-v1alpha2-Describe) | | |

Describe determines the resource describe collector to execute.

| -| `error` | [`Error`](#chainsaw-kyverno-io-v1alpha2-Error) | | |

Error represents the expected errors for this test step. If any of these errors occur, the test will consider them as expected; otherwise, they will be treated as test failures.

| -| `events` | [`Events`](#chainsaw-kyverno-io-v1alpha2-Events) | | |

Events determines the events collector to execute.

| -| `get` | [`Get`](#chainsaw-kyverno-io-v1alpha2-Get) | | |

Get determines the resource get collector to execute.

| -| `patch` | [`Patch`](#chainsaw-kyverno-io-v1alpha2-Patch) | | |

Patch represents a patch operation.

| -| `podLogs` | [`PodLogs`](#chainsaw-kyverno-io-v1alpha2-PodLogs) | | |

PodLogs determines the pod logs collector to execute.

| -| `script` | [`Script`](#chainsaw-kyverno-io-v1alpha2-Script) | | |

Script defines a script to run.

| -| `sleep` | [`Sleep`](#chainsaw-kyverno-io-v1alpha2-Sleep) | | |

Sleep defines zzzz.

| -| `update` | [`Update`](#chainsaw-kyverno-io-v1alpha2-Update) | | |

Update represents an update operation.

| -| `wait` | [`Wait`](#chainsaw-kyverno-io-v1alpha2-Wait) | | |

Wait determines the resource wait collector to execute.

| - -## OperationBindings {#chainsaw-kyverno-io-v1alpha2-OperationBindings} - -**Appears in:** - -- [Operation](#chainsaw-kyverno-io-v1alpha2-Operation) - -

OperationBindings contains bindings options for an operation.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `bindings` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |

Bindings defines additional binding key/values.

| - -## OperationClusters {#chainsaw-kyverno-io-v1alpha2-OperationClusters} - -**Appears in:** - -- [Operation](#chainsaw-kyverno-io-v1alpha2-Operation) - -

OperationClusters contains clusters options for an operation.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `cluster` | `string` | | |

Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).

| -| `clusters` | [`Clusters`](#chainsaw-kyverno-io-v1alpha1-Clusters) | | |

Clusters holds a registry to clusters to support multi-cluster tests.

| - -## OperationOutputs {#chainsaw-kyverno-io-v1alpha2-OperationOutputs} - -**Appears in:** - -- [Operation](#chainsaw-kyverno-io-v1alpha2-Operation) - -

OperationOutputs contains outputs options for an operation.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `outputs` | [`[]Output`](#chainsaw-kyverno-io-v1alpha1-Output) | | |

Outputs defines output bindings.

| - -## Patch {#chainsaw-kyverno-io-v1alpha2-Patch} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Patch represents a set of resources that should be patched. -If a resource doesn't exist yet in the cluster it will fail.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionDryRun` | [`ActionDryRun`](#chainsaw-kyverno-io-v1alpha2-ActionDryRun) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionExpectations` | [`ActionExpectations`](#chainsaw-kyverno-io-v1alpha2-ActionExpectations) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionResourceRef` | [`ActionResourceRef`](#chainsaw-kyverno-io-v1alpha2-ActionResourceRef) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | - -## PodLogs {#chainsaw-kyverno-io-v1alpha2-PodLogs} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

PodLogs defines how to collect pod logs.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionObjectSelector` | [`ActionObjectSelector`](#chainsaw-kyverno-io-v1alpha2-ActionObjectSelector) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `container` | `string` | | |

Container in pod to get logs from else --all-containers is used.

| -| `tail` | `int` | | |

Tail is the number of last lines to collect from pods. If omitted or zero, then the default is 10 if you use a selector, or -1 (all) if you use a pod name. This matches default behavior of `kubectl logs`.

| - ## ReportFormatType {#chainsaw-kyverno-io-v1alpha2-ReportFormatType} (Alias of `string`) @@ -634,41 +155,11 @@ If a resource doesn't exist yet in the cluster it will fail.

| `path` | `string` | | |

ReportPath defines the path.

| | `name` | `string` | | |

ReportName defines the name of report to create. It defaults to "chainsaw-report".

| -## Script {#chainsaw-kyverno-io-v1alpha2-Script} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Script describes a script to run as a part of a test step.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionCheck` | [`ActionCheck`](#chainsaw-kyverno-io-v1alpha2-ActionCheck) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionEnv` | [`ActionEnv`](#chainsaw-kyverno-io-v1alpha2-ActionEnv) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `content` | `string` | | |

Content defines a shell script (run with "sh -c ...").

| - -## Sleep {#chainsaw-kyverno-io-v1alpha2-Sleep} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Sleep represents a duration while nothing happens.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `duration` | [`meta/v1.Duration`](https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration) | :white_check_mark: | |

Duration is the delay used for sleeping.

| - ## TemplatingOptions {#chainsaw-kyverno-io-v1alpha2-TemplatingOptions} **Appears in:** - [ConfigurationSpec](#chainsaw-kyverno-io-v1alpha2-ConfigurationSpec) -- [TestSpec](#chainsaw-kyverno-io-v1alpha2-TestSpec)

TemplatingOptions contains the templating configuration.

@@ -677,180 +168,4 @@ If a resource doesn't exist yet in the cluster it will fail.

|---|---|---|---|---| | `enabled` | `bool` | | |

Enabled determines whether resources should be considered for templating.

| -## TestExecutionOptions {#chainsaw-kyverno-io-v1alpha2-TestExecutionOptions} - -**Appears in:** - -- [TestSpec](#chainsaw-kyverno-io-v1alpha2-TestSpec) - -

TestExecutionOptions determines how tests are run.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `concurrent` | `bool` | | |

Concurrent determines whether the test should run concurrently with other tests.

| -| `skip` | `bool` | | |

Skip determines whether the test should skipped.

| -| `terminationGracePeriod` | [`meta/v1.Duration`](https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration) | | |

TerminationGracePeriod forces the termination grace period on pods, statefulsets, daemonsets and deployments.

| - -## TestSpec {#chainsaw-kyverno-io-v1alpha2-TestSpec} - -**Appears in:** - -- [Test](#chainsaw-kyverno-io-v1alpha2-Test) - -

TestSpec contains the test spec.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `cleanup` | [`CleanupOptions`](#chainsaw-kyverno-io-v1alpha2-CleanupOptions) | | |

Cleanup contains cleanup configuration.

| -| `cluster` | `string` | | |

Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).

| -| `clusters` | [`Clusters`](#chainsaw-kyverno-io-v1alpha1-Clusters) | | |

Clusters holds a registry to clusters to support multi-cluster tests.

| -| `execution` | [`TestExecutionOptions`](#chainsaw-kyverno-io-v1alpha2-TestExecutionOptions) | | |

Execution contains tests execution configuration.

| -| `bindings` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |

Bindings defines additional binding key/values.

| -| `deletion` | [`DeletionOptions`](#chainsaw-kyverno-io-v1alpha2-DeletionOptions) | | |

Deletion contains the global deletion configuration.

| -| `description` | `string` | | |

Description contains a description of the test.

| -| `error` | [`ErrorOptions`](#chainsaw-kyverno-io-v1alpha2-ErrorOptions) | | |

Error contains the global error configuration.

| -| `namespace` | [`NamespaceOptions`](#chainsaw-kyverno-io-v1alpha2-NamespaceOptions) | | |

Namespace contains properties for the namespace to use for tests.

| -| `steps` | [`[]TestStep`](#chainsaw-kyverno-io-v1alpha2-TestStep) | :white_check_mark: | |

Steps defining the test.

| -| `templating` | [`TemplatingOptions`](#chainsaw-kyverno-io-v1alpha2-TemplatingOptions) | | |

Templating contains the templating config.

| -| `timeouts` | [`Timeouts`](#chainsaw-kyverno-io-v1alpha1-Timeouts) | | |

Timeouts for the test. Overrides the global timeouts set in the Configuration on a per operation basis.

| - -## TestStep {#chainsaw-kyverno-io-v1alpha2-TestStep} - -**Appears in:** - -- [TestSpec](#chainsaw-kyverno-io-v1alpha2-TestSpec) - -

TestStep contains the test step definition used in a test spec.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `name` | `string` | | |

Name of the step.

| -| `TestStepSpec` | [`TestStepSpec`](#chainsaw-kyverno-io-v1alpha2-TestStepSpec) | :white_check_mark: | :white_check_mark: |

TestStepSpec of the step.

| - -## TestStepSpec {#chainsaw-kyverno-io-v1alpha2-TestStepSpec} - -**Appears in:** - -- [TestStep](#chainsaw-kyverno-io-v1alpha2-TestStep) - -

TestStepSpec defines the desired state and behavior for each test step.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `description` | `string` | | |

Description contains a description of the test step.

| -| `timeouts` | [`Timeouts`](#chainsaw-kyverno-io-v1alpha1-Timeouts) | | |

Timeouts for the test step. Overrides the global timeouts set in the Configuration and the timeouts eventually set in the Test.

| -| `deletionPropagationPolicy` | [`meta/v1.DeletionPropagation`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#deletionpropagation-v1-meta) | | |

DeletionPropagationPolicy decides if a deletion will propagate to the dependents of the object, and how the garbage collector will handle the propagation. Overrides the deletion propagation policy set in both the Configuration and the Test.

| -| `cluster` | `string` | | |

Cluster defines the target cluster (default cluster will be used if not specified and/or overridden).

| -| `clusters` | [`Clusters`](#chainsaw-kyverno-io-v1alpha1-Clusters) | | |

Clusters holds a registry to clusters to support multi-cluster tests.

| -| `skipDelete` | `bool` | | |

SkipDelete determines whether the resources created by the step should be deleted after the test step is executed.

| -| `template` | `bool` | | |

Template determines whether resources should be considered for templating.

| -| `bindings` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |

Bindings defines additional binding key/values.

| -| `try` | [`[]TryOperation`](#chainsaw-kyverno-io-v1alpha2-TryOperation) | :white_check_mark: | |

Try defines what the step will try to execute.

| -| `catch` | [`[]Operation`](#chainsaw-kyverno-io-v1alpha2-Operation) | | |

Catch defines what the step will execute when an error happens.

| -| `finally` | [`[]Operation`](#chainsaw-kyverno-io-v1alpha2-Operation) | | |

Finally defines what the step will execute after the step is terminated.

| -| `cleanup` | [`[]Operation`](#chainsaw-kyverno-io-v1alpha2-Operation) | | |

Cleanup defines what will be executed after the test is terminated.

| - -## TryOperation {#chainsaw-kyverno-io-v1alpha2-TryOperation} - -**Appears in:** - -- [TestStepSpec](#chainsaw-kyverno-io-v1alpha2-TestStepSpec) - -

TryOperation defines operation elements.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `Operation` | [`Operation`](#chainsaw-kyverno-io-v1alpha2-Operation) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `continueOnError` | `bool` | | |

ContinueOnError determines whether a test should continue or not in case the operation was not successful. Even if the test continues executing, it will still be reported as failed.

| - -## Update {#chainsaw-kyverno-io-v1alpha2-Update} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Update represents a set of resources that should be updated. -If a resource does not exist in the cluster it will fail.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionDryRun` | [`ActionDryRun`](#chainsaw-kyverno-io-v1alpha2-ActionDryRun) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionExpectations` | [`ActionExpectations`](#chainsaw-kyverno-io-v1alpha2-ActionExpectations) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionResourceRef` | [`ActionResourceRef`](#chainsaw-kyverno-io-v1alpha2-ActionResourceRef) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | - -## Wait {#chainsaw-kyverno-io-v1alpha2-Wait} - -**Appears in:** - -- [OperationAction](#chainsaw-kyverno-io-v1alpha2-OperationAction) - -

Wait specifies how to perform wait operations on resources.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `ActionTimeout` | [`ActionTimeout`](#chainsaw-kyverno-io-v1alpha2-ActionTimeout) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionFormat` | [`ActionFormat`](#chainsaw-kyverno-io-v1alpha2-ActionFormat) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `ActionObject` | [`ActionObject`](#chainsaw-kyverno-io-v1alpha2-ActionObject) | :white_check_mark: | :white_check_mark: | *No description provided.* | -| `for` | [`WaitFor`](#chainsaw-kyverno-io-v1alpha2-WaitFor) | :white_check_mark: | |

WaitFor specifies the condition to wait for.

| - -## WaitFor {#chainsaw-kyverno-io-v1alpha2-WaitFor} - -**Appears in:** - -- [Wait](#chainsaw-kyverno-io-v1alpha2-Wait) - -

WaitFor specifies the condition to wait for.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `deletion` | [`WaitForDeletion`](#chainsaw-kyverno-io-v1alpha2-WaitForDeletion) | | |

Deletion specifies parameters for waiting on a resource's deletion.

| -| `condition` | [`WaitForCondition`](#chainsaw-kyverno-io-v1alpha2-WaitForCondition) | | |

Condition specifies the condition to wait for.

| -| `jsonPath` | [`WaitForJsonPath`](#chainsaw-kyverno-io-v1alpha2-WaitForJsonPath) | | |

JsonPath specifies the json path condition to wait for.

| - -## WaitForCondition {#chainsaw-kyverno-io-v1alpha2-WaitForCondition} - -**Appears in:** - -- [WaitFor](#chainsaw-kyverno-io-v1alpha2-WaitFor) - -

WaitForCondition represents parameters for waiting on a specific condition of a resource.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `name` | `string` | :white_check_mark: | |

Name defines the specific condition to wait for, e.g., "Available", "Ready".

| -| `value` | `string` | | |

Value defines the specific condition status to wait for, e.g., "True", "False".

| - -## WaitForDeletion {#chainsaw-kyverno-io-v1alpha2-WaitForDeletion} - -**Appears in:** - -- [WaitFor](#chainsaw-kyverno-io-v1alpha2-WaitFor) - -

WaitForDeletion represents parameters for waiting on a resource's deletion.

- - -## WaitForJsonPath {#chainsaw-kyverno-io-v1alpha2-WaitForJsonPath} - -**Appears in:** - -- [WaitFor](#chainsaw-kyverno-io-v1alpha2-WaitFor) - -

WaitForJsonPath represents parameters for waiting on a json path of a resource.

- - -| Field | Type | Required | Inline | Description | -|---|---|---|---|---| -| `path` | `string` | :white_check_mark: | |

Path defines the json path to wait for, e.g. '{.status.phase}'.

| -| `value` | `string` | :white_check_mark: | |

Value defines the expected value to wait for, e.g., "Running".

| - \ No newline at end of file From 351e47a97aaf59b07686fcfa7dd0e64a6e7a86a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Mon, 16 Sep 2024 14:17:23 +0200 Subject: [PATCH 03/18] fix: make template required in step template (#1984) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- .crds/chainsaw.kyverno.io_tests.yaml | 2 ++ .schemas/json/test-chainsaw-v1alpha1.json | 8 ++++---- pkg/apis/v1alpha1/step.go | 2 +- pkg/data/crds/chainsaw.kyverno.io_tests.yaml | 2 ++ pkg/data/schemas/json/test-chainsaw-v1alpha1.json | 8 ++++---- pkg/discovery/load.go | 2 +- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/.crds/chainsaw.kyverno.io_tests.yaml b/.crds/chainsaw.kyverno.io_tests.yaml index 5055b3438..a4dbe727a 100644 --- a/.crds/chainsaw.kyverno.io_tests.yaml +++ b/.crds/chainsaw.kyverno.io_tests.yaml @@ -4625,6 +4625,8 @@ spec: template: description: Template references a step template. type: string + required: + - template type: object type: object type: array diff --git a/.schemas/json/test-chainsaw-v1alpha1.json b/.schemas/json/test-chainsaw-v1alpha1.json index 240ec526f..a7b2dc182 100644 --- a/.schemas/json/test-chainsaw-v1alpha1.json +++ b/.schemas/json/test-chainsaw-v1alpha1.json @@ -9185,13 +9185,13 @@ "object", "null" ], + "required": [ + "template" + ], "properties": { "template": { "description": "Template references a step template.", - "type": [ - "string", - "null" - ] + "type": "string" } }, "additionalProperties": false diff --git a/pkg/apis/v1alpha1/step.go b/pkg/apis/v1alpha1/step.go index c8f020721..00918c0a1 100644 --- a/pkg/apis/v1alpha1/step.go +++ b/pkg/apis/v1alpha1/step.go @@ -62,7 +62,7 @@ type TestStep struct { // Use defines a reference to a step template. type Use struct { // Template references a step template. - Template string `json:"template,omitempty"` + Template string `json:"template"` } // TestStepSpec defines the desired state and behavior for each test step. diff --git a/pkg/data/crds/chainsaw.kyverno.io_tests.yaml b/pkg/data/crds/chainsaw.kyverno.io_tests.yaml index 5055b3438..a4dbe727a 100644 --- a/pkg/data/crds/chainsaw.kyverno.io_tests.yaml +++ b/pkg/data/crds/chainsaw.kyverno.io_tests.yaml @@ -4625,6 +4625,8 @@ spec: template: description: Template references a step template. type: string + required: + - template type: object type: object type: array diff --git a/pkg/data/schemas/json/test-chainsaw-v1alpha1.json b/pkg/data/schemas/json/test-chainsaw-v1alpha1.json index 240ec526f..a7b2dc182 100644 --- a/pkg/data/schemas/json/test-chainsaw-v1alpha1.json +++ b/pkg/data/schemas/json/test-chainsaw-v1alpha1.json @@ -9185,13 +9185,13 @@ "object", "null" ], + "required": [ + "template" + ], "properties": { "template": { "description": "Template references a step template.", - "type": [ - "string", - "null" - ] + "type": "string" } }, "additionalProperties": false diff --git a/pkg/discovery/load.go b/pkg/discovery/load.go index 4856cb482..876f3fa43 100644 --- a/pkg/discovery/load.go +++ b/pkg/discovery/load.go @@ -58,7 +58,7 @@ func LoadTest(fileName string, path string, remarshal bool) ([]Test, error) { for _, apiTest := range apiTests { for step := range apiTest.Spec.Steps { step := &apiTest.Spec.Steps[step] - if step.Use != nil && step.Use.Template != "" { + if step.Use != nil { steptpl, err := steptemplate.Load(filepath.Join(path, step.Use.Template), remarshal) if err != nil { return nil, err From 404084144e1c6c2eebe0b85c473ff971fc2d1371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Mon, 16 Sep 2024 14:32:00 +0200 Subject: [PATCH 04/18] fix: dependabot gomod directories (#1987) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- .github/dependabot.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2fccaad8f..6b8d0be2f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,7 +1,9 @@ version: 2 updates: - package-ecosystem: gomod - directory: / + directories: + - / + - /hack/controller-gen/ schedule: interval: daily - package-ecosystem: github-actions From ddb186fb5a733824af5c840ac027a6fc28260b6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 12:41:45 +0000 Subject: [PATCH 05/18] chore(deps): bump sigs.k8s.io/controller-tools in /hack/controller-gen (#1990) Bumps [sigs.k8s.io/controller-tools](https://github.com/kubernetes-sigs/controller-tools) from 0.16.1 to 0.16.3. - [Release notes](https://github.com/kubernetes-sigs/controller-tools/releases) - [Changelog](https://github.com/kubernetes-sigs/controller-tools/blob/main/envtest-releases.yaml) - [Commits](https://github.com/kubernetes-sigs/controller-tools/compare/v0.16.1...v0.16.3) --- updated-dependencies: - dependency-name: sigs.k8s.io/controller-tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- hack/controller-gen/go.mod | 2 +- hack/controller-gen/go.sum | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/hack/controller-gen/go.mod b/hack/controller-gen/go.mod index 5ef270463..29e9ef973 100644 --- a/hack/controller-gen/go.mod +++ b/hack/controller-gen/go.mod @@ -5,7 +5,7 @@ go 1.22.0 require ( github.com/spf13/cobra v1.8.1 k8s.io/apiextensions-apiserver v0.31.0 - sigs.k8s.io/controller-tools v0.16.1 + sigs.k8s.io/controller-tools v0.16.3 ) require ( diff --git a/hack/controller-gen/go.sum b/hack/controller-gen/go.sum index 2fc5535f3..35a811dcc 100644 --- a/hack/controller-gen/go.sum +++ b/hack/controller-gen/go.sum @@ -42,8 +42,8 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= -github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= +github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -70,8 +70,6 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= @@ -90,8 +88,8 @@ golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= @@ -127,8 +125,8 @@ k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/controller-tools v0.16.1 h1:gvIsZm+2aimFDIBiDKumR7EBkc+oLxljoUVfRbDI6RI= -sigs.k8s.io/controller-tools v0.16.1/go.mod h1:0I0xqjR65YTfoO12iR+mZR6s6UAVcUARgXRlsu0ljB0= +sigs.k8s.io/controller-tools v0.16.3 h1:z48C5/d4jCVQQvtiSBL5MYyZ3EO2eFIOXrIKMgHVhFY= +sigs.k8s.io/controller-tools v0.16.3/go.mod h1:AEj6k+w1kYpLZv2einOH3mj52ips4W/6FUjnB5tkJGs= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= From 01c20fb152a56ccb339f48bdbb99680728ebf6a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 14:52:15 +0200 Subject: [PATCH 06/18] chore(deps): bump k8s.io/apiextensions-apiserver in /hack/controller-gen (#1989) Bumps [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) from 0.31.0 to 0.31.1. - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.31.0...v0.31.1) --- updated-dependencies: - dependency-name: k8s.io/apiextensions-apiserver dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- hack/controller-gen/go.mod | 4 ++-- hack/controller-gen/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hack/controller-gen/go.mod b/hack/controller-gen/go.mod index 29e9ef973..e37cc0df0 100644 --- a/hack/controller-gen/go.mod +++ b/hack/controller-gen/go.mod @@ -4,7 +4,7 @@ go 1.22.0 require ( github.com/spf13/cobra v1.8.1 - k8s.io/apiextensions-apiserver v0.31.0 + k8s.io/apiextensions-apiserver v0.31.1 sigs.k8s.io/controller-tools v0.16.3 ) @@ -29,7 +29,7 @@ require ( gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/apimachinery v0.31.0 // indirect + k8s.io/apimachinery v0.31.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/hack/controller-gen/go.sum b/hack/controller-gen/go.sum index 35a811dcc..30cc87741 100644 --- a/hack/controller-gen/go.sum +++ b/hack/controller-gen/go.sum @@ -117,10 +117,10 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= -k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= -k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc= -k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= +k8s.io/apiextensions-apiserver v0.31.1 h1:L+hwULvXx+nvTYX/MKM3kKMZyei+UiSXQWciX/N6E40= +k8s.io/apiextensions-apiserver v0.31.1/go.mod h1:tWMPR3sgW+jsl2xm9v7lAyRF1rYEK71i9G5dRtkknoQ= +k8s.io/apimachinery v0.31.1 h1:mhcUBbj7KUjaVhyXILglcVjuS4nYXiwC+KKFBgIVy7U= +k8s.io/apimachinery v0.31.1/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= From ae96478fe6dd835ae818d99e359f34f79209b9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Mon, 16 Sep 2024 15:10:21 +0200 Subject: [PATCH 07/18] feat: add bindings support to step templates (#1985) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add bindings support to step templates Signed-off-by: Charles-Edouard Brétéché * fix comment Signed-off-by: Charles-Edouard Brétéché --------- Signed-off-by: Charles-Edouard Brétéché --- .crds/chainsaw.kyverno.io_tests.yaml | 23 +++++++++++ .schemas/json/test-chainsaw-v1alpha1.json | 41 +++++++++++++++++++ pkg/apis/v1alpha1/step.go | 12 ++++++ pkg/apis/v1alpha1/zz_generated.deepcopy.go | 26 +++++++++++- pkg/data/crds/chainsaw.kyverno.io_tests.yaml | 23 +++++++++++ .../schemas/json/test-chainsaw-v1alpha1.json | 41 +++++++++++++++++++ pkg/discovery/load.go | 12 +++--- testdata/e2e/examples/step-template/README.md | 8 +++- .../examples/step-template/chainsaw-test.yaml | 4 ++ .../examples/step-template/step-template.yaml | 4 +- .../docs/reference/apis/chainsaw.v1alpha1.md | 15 +++++++ 11 files changed, 200 insertions(+), 9 deletions(-) diff --git a/.crds/chainsaw.kyverno.io_tests.yaml b/.crds/chainsaw.kyverno.io_tests.yaml index a4dbe727a..2fccf1f24 100644 --- a/.crds/chainsaw.kyverno.io_tests.yaml +++ b/.crds/chainsaw.kyverno.io_tests.yaml @@ -4625,6 +4625,29 @@ spec: template: description: Template references a step template. type: string + with: + default: {} + description: With defines arguments passed to the step template. + properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as + a binding in an executing test. + properties: + name: + description: Name the name of the binding. + pattern: ^(?:\w+|\(.+\))$ + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array + type: object required: - template type: object diff --git a/.schemas/json/test-chainsaw-v1alpha1.json b/.schemas/json/test-chainsaw-v1alpha1.json index a7b2dc182..258912dc4 100644 --- a/.schemas/json/test-chainsaw-v1alpha1.json +++ b/.schemas/json/test-chainsaw-v1alpha1.json @@ -9192,6 +9192,47 @@ "template": { "description": "Template references a step template.", "type": "string" + }, + "with": { + "description": "With defines arguments passed to the step template.", + "type": [ + "object", + "null" + ], + "default": {}, + "properties": { + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string", + "pattern": "^(?:\\w+|\\(.+\\))$" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false } }, "additionalProperties": false diff --git a/pkg/apis/v1alpha1/step.go b/pkg/apis/v1alpha1/step.go index 00918c0a1..6be982132 100644 --- a/pkg/apis/v1alpha1/step.go +++ b/pkg/apis/v1alpha1/step.go @@ -63,6 +63,18 @@ type TestStep struct { type Use struct { // Template references a step template. Template string `json:"template"` + + // With defines arguments passed to the step template. + // +optional + // +kubebuilder:default:={} + With With `json:"with"` +} + +// With defines arguments passed to step templates. +type With struct { + // Bindings defines additional binding key/values. + // +optional + Bindings []Binding `json:"bindings,omitempty"` } // TestStepSpec defines the desired state and behavior for each test step. diff --git a/pkg/apis/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/v1alpha1/zz_generated.deepcopy.go index 8c4b2b007..389808182 100644 --- a/pkg/apis/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/v1alpha1/zz_generated.deepcopy.go @@ -1352,7 +1352,7 @@ func (in *TestStep) DeepCopyInto(out *TestStep) { if in.Use != nil { in, out := &in.Use, &out.Use *out = new(Use) - **out = **in + (*in).DeepCopyInto(*out) } in.TestStepSpec.DeepCopyInto(&out.TestStepSpec) return @@ -1523,6 +1523,7 @@ func (in *Update) DeepCopy() *Update { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Use) DeepCopyInto(out *Use) { *out = *in + in.With.DeepCopyInto(&out.With) return } @@ -1645,3 +1646,26 @@ func (in *WaitForJsonPath) DeepCopy() *WaitForJsonPath { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *With) DeepCopyInto(out *With) { + *out = *in + if in.Bindings != nil { + in, out := &in.Bindings, &out.Bindings + *out = make([]Binding, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new With. +func (in *With) DeepCopy() *With { + if in == nil { + return nil + } + out := new(With) + in.DeepCopyInto(out) + return out +} diff --git a/pkg/data/crds/chainsaw.kyverno.io_tests.yaml b/pkg/data/crds/chainsaw.kyverno.io_tests.yaml index a4dbe727a..2fccf1f24 100644 --- a/pkg/data/crds/chainsaw.kyverno.io_tests.yaml +++ b/pkg/data/crds/chainsaw.kyverno.io_tests.yaml @@ -4625,6 +4625,29 @@ spec: template: description: Template references a step template. type: string + with: + default: {} + description: With defines arguments passed to the step template. + properties: + bindings: + description: Bindings defines additional binding key/values. + items: + description: Binding represents a key/value set as + a binding in an executing test. + properties: + name: + description: Name the name of the binding. + pattern: ^(?:\w+|\(.+\))$ + type: string + value: + description: Value value of the binding. + x-kubernetes-preserve-unknown-fields: true + required: + - name + - value + type: object + type: array + type: object required: - template type: object diff --git a/pkg/data/schemas/json/test-chainsaw-v1alpha1.json b/pkg/data/schemas/json/test-chainsaw-v1alpha1.json index a7b2dc182..258912dc4 100644 --- a/pkg/data/schemas/json/test-chainsaw-v1alpha1.json +++ b/pkg/data/schemas/json/test-chainsaw-v1alpha1.json @@ -9192,6 +9192,47 @@ "template": { "description": "Template references a step template.", "type": "string" + }, + "with": { + "description": "With defines arguments passed to the step template.", + "type": [ + "object", + "null" + ], + "default": {}, + "properties": { + "bindings": { + "description": "Bindings defines additional binding key/values.", + "type": [ + "array", + "null" + ], + "items": { + "description": "Binding represents a key/value set as a binding in an executing test.", + "type": [ + "object", + "null" + ], + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name the name of the binding.", + "type": "string", + "pattern": "^(?:\\w+|\\(.+\\))$" + }, + "value": { + "description": "Value value of the binding.", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false } }, "additionalProperties": false diff --git a/pkg/discovery/load.go b/pkg/discovery/load.go index 876f3fa43..7fc3bfdfb 100644 --- a/pkg/discovery/load.go +++ b/pkg/discovery/load.go @@ -66,12 +66,14 @@ func LoadTest(fileName string, path string, remarshal bool) ([]Test, error) { if len(steptpl) != 1 { return nil, errors.New("step template not found or multiple templates exist") } + template := steptpl[0] + step.Bindings = append(step.Bindings, step.Use.With.Bindings...) + step.Bindings = append(step.Bindings, template.Spec.Bindings...) + step.Try = append(step.Try, template.Spec.Try...) + step.Catch = append(step.Catch, template.Spec.Catch...) + step.Finally = append(step.Finally, template.Spec.Finally...) + step.Cleanup = append(step.Cleanup, template.Spec.Cleanup...) step.Use = nil - step.Bindings = append(step.Bindings, steptpl[0].Spec.Bindings...) - step.Try = append(step.Try, steptpl[0].Spec.Try...) - step.Catch = append(step.Catch, steptpl[0].Spec.Catch...) - step.Finally = append(step.Finally, steptpl[0].Spec.Finally...) - step.Cleanup = append(step.Cleanup, steptpl[0].Spec.Cleanup...) } } } diff --git a/testdata/e2e/examples/step-template/README.md b/testdata/e2e/examples/step-template/README.md index 388ff0b90..a0804a960 100644 --- a/testdata/e2e/examples/step-template/README.md +++ b/testdata/e2e/examples/step-template/README.md @@ -6,12 +6,18 @@ | # | Name | Bindings | Try | Catch | Finally | Cleanup | |:-:|---|:-:|:-:|:-:|:-:| -| 1 | [step-1](#step-step-1) | 0 | 2 | 0 | 0 | 0 | +| 1 | [step-1](#step-step-1) | 1 | 2 | 0 | 0 | 0 | ### Step: `step-1` *No description* +#### Bindings + +| # | Name | Value | +|:-:|---|---| +| 1 | `file` | "configmap.yaml" | + #### Try | # | Operation | Bindings | Outputs | Description | diff --git a/testdata/e2e/examples/step-template/chainsaw-test.yaml b/testdata/e2e/examples/step-template/chainsaw-test.yaml index 3121eb2b3..12bb5a058 100644 --- a/testdata/e2e/examples/step-template/chainsaw-test.yaml +++ b/testdata/e2e/examples/step-template/chainsaw-test.yaml @@ -7,3 +7,7 @@ spec: steps: - use: template: step-template.yaml + with: + bindings: + - name: file + value: configmap.yaml diff --git a/testdata/e2e/examples/step-template/step-template.yaml b/testdata/e2e/examples/step-template/step-template.yaml index f18be9370..2aa1f417d 100644 --- a/testdata/e2e/examples/step-template/step-template.yaml +++ b/testdata/e2e/examples/step-template/step-template.yaml @@ -8,8 +8,8 @@ spec: # first operation: create the config map - apply: # file is relative to the test folder - file: configmap.yaml + file: ($file) # second operation: verify the config map exists and contains the expected data - assert: # file is relative to the test folder - file: configmap.yaml + file: ($file) diff --git a/website/docs/reference/apis/chainsaw.v1alpha1.md b/website/docs/reference/apis/chainsaw.v1alpha1.md index 18cad9354..ad7b934af 100644 --- a/website/docs/reference/apis/chainsaw.v1alpha1.md +++ b/website/docs/reference/apis/chainsaw.v1alpha1.md @@ -336,6 +336,7 @@ during the testing process.

- [StepTemplateSpec](#chainsaw-kyverno-io-v1alpha1-StepTemplateSpec) - [TestSpec](#chainsaw-kyverno-io-v1alpha1-TestSpec) - [TestStepSpec](#chainsaw-kyverno-io-v1alpha1-TestStepSpec) +- [With](#chainsaw-kyverno-io-v1alpha1-With)

Binding represents a key/value set as a binding in an executing test.

@@ -982,6 +983,7 @@ If a resource does not exist in the cluster it will fail.

| Field | Type | Required | Inline | Description | |---|---|---|---|---| | `template` | `string` | :white_check_mark: | |

Template references a step template.

| +| `with` | [`With`](#chainsaw-kyverno-io-v1alpha1-With) | | |

With defines arguments passed to the step template.

| ## Wait {#chainsaw-kyverno-io-v1alpha1-Wait} @@ -1053,4 +1055,17 @@ If a resource does not exist in the cluster it will fail.

| `path` | [`Expression`](#chainsaw-kyverno-io-v1alpha1-Expression) | :white_check_mark: | |

Path defines the json path to wait for, e.g. '{.status.phase}'.

| | `value` | [`Expression`](#chainsaw-kyverno-io-v1alpha1-Expression) | | |

Value defines the expected value to wait for, e.g., "Running".

| +## With {#chainsaw-kyverno-io-v1alpha1-With} + +**Appears in:** + +- [Use](#chainsaw-kyverno-io-v1alpha1-Use) + +

With defines arguments passed to step templates.

+ + +| Field | Type | Required | Inline | Description | +|---|---|---|---|---| +| `bindings` | [`[]Binding`](#chainsaw-kyverno-io-v1alpha1-Binding) | | |

Bindings defines additional binding key/values.

| + \ No newline at end of file From ce3f6923a25690583d932de339e270e5192bcb1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Mon, 16 Sep 2024 21:16:04 +0200 Subject: [PATCH 08/18] chore: update release notes (#1995) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- .release-notes/main.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.release-notes/main.md b/.release-notes/main.md index 7307d6bfc..ec0ba52a5 100644 --- a/.release-notes/main.md +++ b/.release-notes/main.md @@ -2,22 +2,23 @@ Release notes for `TODO`. - +- Started a JMESPath function example page in the docs (only `x_k8s_get` is available at this time) -## 🔧 Fixes 🔧 +## 🎸 Misc 🎸 -- Fixed default report name not set correctly +- Removed test `v1alpha2` API for now From 0621e0a2c7aabc55b32ed20febed0d738f0cc136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Tue, 17 Sep 2024 09:40:54 +0200 Subject: [PATCH 09/18] release: v0.2.10 (#1997) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- .github/ISSUE_TEMPLATE/bug.yaml | 1 + .github/ISSUE_TEMPLATE/general-question.yaml | 1 + .release-notes/main.md | 21 ++++++++--------- .release-notes/v0.2.10.md | 24 ++++++++++++++++++++ 4 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 .release-notes/v0.2.10.md diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index 8f17d45ec..e19a457b7 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -14,6 +14,7 @@ body: label: chainsaw version Version description: What version of chainsaw are you running? options: + - v0.2.10 - v0.2.9 - v0.2.8 - v0.2.7 diff --git a/.github/ISSUE_TEMPLATE/general-question.yaml b/.github/ISSUE_TEMPLATE/general-question.yaml index 8823c67e6..6f44d6c9f 100644 --- a/.github/ISSUE_TEMPLATE/general-question.yaml +++ b/.github/ISSUE_TEMPLATE/general-question.yaml @@ -23,6 +23,7 @@ body: label: chainsaw version Version description: What version of chainsaw are you running? options: + - v0.2.10 - v0.2.9 - v0.2.8 - v0.2.7 diff --git a/.release-notes/main.md b/.release-notes/main.md index ec0ba52a5..df877731f 100644 --- a/.release-notes/main.md +++ b/.release-notes/main.md @@ -2,23 +2,20 @@ Release notes for `TODO`. + diff --git a/.release-notes/v0.2.10.md b/.release-notes/v0.2.10.md new file mode 100644 index 000000000..d640b7a0b --- /dev/null +++ b/.release-notes/v0.2.10.md @@ -0,0 +1,24 @@ +# Release notes + +Release notes for `v0.2.10`. + +## 💫 New features 💫 + +- Added bindings support when referencing step templates +- Restructured the reports system +- Added reports in JSON format back +- Added new JUnit report formats with different granularity (`JUNIT-TEST`, `JUNIT-STEP`, `JUNIT-OPERATION`) +- `XML` report format should be considered deprecated and replaced with one of the `JUNIT-*` format + +## 🔧 Fixes 🔧 + +- Fixed default report name not set correctly +- Made `template` required when referencing a step template + +## 📚 Docs 📚 + +- Started a JMESPath function example page in the docs (only `x_k8s_get` is available at this time) + +## 🎸 Misc 🎸 + +- Removed test `v1alpha2` API for now From ac253919dc2a7801a2603fd1aa21c70d8856efa2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 10:39:30 +0200 Subject: [PATCH 10/18] Brew formula update for chainsaw version v0.2.10 (#1999) Co-authored-by: goreleaserbot --- chainsaw.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/chainsaw.rb b/chainsaw.rb index aaf8e4d3b..583b82bc2 100644 --- a/chainsaw.rb +++ b/chainsaw.rb @@ -5,20 +5,20 @@ class Chainsaw < Formula desc "Declarative Kubernetes end-to-end testing." homepage "https://kyverno.github.io/chainsaw" - version "0.2.9" + version "0.2.10" on_macos do on_intel do - url "https://github.com/kyverno/chainsaw/releases/download/v0.2.9/chainsaw_darwin_amd64.tar.gz" - sha256 "8d3439adb7963e8302471fc2b152e2275787d0ab718302e413f3b64a1015e386" + url "https://github.com/kyverno/chainsaw/releases/download/v0.2.10/chainsaw_darwin_amd64.tar.gz" + sha256 "2f36fdefa5b820afc2d0ad7b5697ec87dac6bf728a44fedbb9c2070827a22e3c" def install bin.install "chainsaw" end end on_arm do - url "https://github.com/kyverno/chainsaw/releases/download/v0.2.9/chainsaw_darwin_arm64.tar.gz" - sha256 "905af09ce55606cacadb1629c33cd7dd75d3c3d88631ea0750543c8ff85cef9a" + url "https://github.com/kyverno/chainsaw/releases/download/v0.2.10/chainsaw_darwin_arm64.tar.gz" + sha256 "226ef75a1cdf686f90a94be336fc6280bd52ffd932e2892738d3283e9c5258b2" def install bin.install "chainsaw" @@ -29,8 +29,8 @@ def install on_linux do on_intel do if Hardware::CPU.is_64_bit? - url "https://github.com/kyverno/chainsaw/releases/download/v0.2.9/chainsaw_linux_amd64.tar.gz" - sha256 "ac7718c646ad4a28a73dbac9ccfb55f8299fe978431d1b55238bf0abb24bca28" + url "https://github.com/kyverno/chainsaw/releases/download/v0.2.10/chainsaw_linux_amd64.tar.gz" + sha256 "4f41387d780d8e61f67b622acb659dcaf55a24adcfb5b018b54395eab6b3f97f" def install bin.install "chainsaw" @@ -39,8 +39,8 @@ def install end on_arm do if Hardware::CPU.is_64_bit? - url "https://github.com/kyverno/chainsaw/releases/download/v0.2.9/chainsaw_linux_arm64.tar.gz" - sha256 "72475636b0f1cdad08564b9c7703699b10c84f511b2947835dafa250842a742d" + url "https://github.com/kyverno/chainsaw/releases/download/v0.2.10/chainsaw_linux_arm64.tar.gz" + sha256 "62591b31b62ecfd656b4c7c9643b32461853122c4730252ac638728ed2020c84" def install bin.install "chainsaw" From a9d1db95dffb600f23255d7856338c82596f54cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Thu, 19 Sep 2024 10:12:14 +0200 Subject: [PATCH 11/18] fix: exit code when failing in root test run (#2002) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- pkg/runner/processors/tests.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/runner/processors/tests.go b/pkg/runner/processors/tests.go index b75c90f8d..e8ed6cd39 100644 --- a/pkg/runner/processors/tests.go +++ b/pkg/runner/processors/tests.go @@ -68,6 +68,7 @@ func (p *testsProcessor) Run(ctx context.Context, tc engine.Context, tests ...di tc, namespace, err := setupContextData(ctx, tc, contextData) if err != nil { logging.Log(ctx, logging.Internal, logging.ErrorStatus, color.BoldRed, logging.ErrSection(err)) + tc.IncFailed() failer.FailNow(ctx) } var nspacer namespacer.Namespacer @@ -80,6 +81,7 @@ func (p *testsProcessor) Run(ctx context.Context, tc engine.Context, tests ...di name, err := names.Test(p.config.Discovery.FullName, test) if err != nil { logging.Log(ctx, logging.Internal, logging.ErrorStatus, color.BoldRed, logging.ErrSection(err)) + tc.IncFailed() failer.FailNow(ctx) } // 3. compute test scenarios From 0cf92f710b805589fd294d06b4663603fea2eefb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 10:09:28 +0000 Subject: [PATCH 12/18] chore(deps): bump github/codeql-action from 3.26.7 to 3.26.8 (#2004) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.7 to 3.26.8. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/8214744c546c1e5c8f03dde8fab3a7353211988d...294a9d92911152fe08befb9ec03e240add280cb3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 9fda1cdef..17317e043 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -40,7 +40,7 @@ jobs: exit-code: '0' vuln-type: os,library - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 + uses: github/codeql-action/upload-sarif@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 with: sarif_file: trivy-results.sarif category: code \ No newline at end of file From 81916ce8e603b7ff159964f4d0c19067e18b15e6 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Wed, 25 Sep 2024 22:34:18 +0300 Subject: [PATCH 13/18] chore: add odigos to adopters (#2009) Signed-off-by: Amir Blum --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index de48d8b96..fe6dd443d 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -21,6 +21,7 @@ The list of organizations that have publicly shared the usage of Chainsaw: | [Provider-ceph](https://github.com/linode/provider-ceph) | Chainsaw replaced Kuttl and made our e2e tests much more readable and easier to debug | | [Linode CAPI provider](https://github.com/linode/cluster-api-provider-linode) | Chainsaw replaced Kuttl and made our e2e tests much more readable and easier to debug. 🙏 @eddycharly | | [Linode COSI driver](https://github.com/linode/linode-cosi-driver) | Running all end to end tests for object store driver | +| [Odigos](https://github.com/odigos-io/odigos) | Chainsaw helps us run complex e2e tests confidently, ensuring project reliability. |