From 87a0e88f4cf7286e1d57eea8b829c524ed2cd219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Huss?= Date: Tue, 18 Jun 2024 15:33:42 +0200 Subject: [PATCH] 0.3.5: Improved error handling on mutations --- .gitignore | 1 + back/main.ts | 1 + back/resolvers/core/CrdObject.ts | 24 +- back/schema/core.graphql | 20 +- data/certmanager.json | 136 +- data/cnpg.json | 853 +- data/fission.json | 2506 +- data/fluxcd.json | 382 +- data/k8s.json | 2177 +- data/k8up.json | 856 +- data/kuberest.json | 1320 + data/kubevirt.json | 18791 ++++++---- data/mariadb.json | 958 +- data/mongodb.json | 45 +- data/monitoring.json | 1958 +- data/namecheap.json | 17 +- data/oracle.json | 1019 +- data/projectcalico.json | 630 +- data/rabbitmq.json | 927 +- data/redis.json | 1229 +- data/secretgenerator.json | 63 +- data/tekton.json | 28766 +++++++++++----- data/traefik.json | 1076 +- data/vynil.json | 163 +- data/whereabouts.json | 234 +- data/zalando.json | 177 +- front/components/core/MetadataView.vue | 3 +- front/components/generic/GenericEdit.vue | 3 +- front/components/generic/GenericList.vue | 2 +- front/libs/k8s/custom.ts | 65 + front/libs/kuberest/custom.ts | 20 + front/libs/kubevirt/custom.ts | 3 - .../core/clusteredObject.create.graphql | 12 +- .../core/clusteredObject.delete.graphql | 12 +- .../core/clusteredObject.patch.graphql | 11 +- .../core/namespacedObject.create.graphql | 13 +- .../core/namespacedObject.delete.graphql | 13 +- .../core/namespacedObject.patch.graphql | 12 +- package.json | 4 +- utils/gen.ts | 2 + utils/generator/back/grp.schema.graphql.hbs | 6 +- utils/generator/back/obj.resolvers.ts.hbs | 6 + utils/generator/config.ts | 21 +- .../front/all.query.read.graphql.hbs | 26 +- utils/generator/front/grp.lib.ts.hbs | 4 +- .../front/grp.query.read.graphql.hbs | 27 +- utils/generator/front/obj.lib.ts.hbs | 84 +- utils/generator/front/obj.pages.new.vue.hbs | 11 +- .../front/obj.query.mutation.graphql.hbs | 13 +- .../front/obj.query.read.graphql.hbs | 10 +- utils/generator/partials/back/advices.ts.hbs | 28 + .../partials/back/create.resolver.ts.hbs | 4 +- .../partials/back/delete.resolver.ts.hbs | 4 +- .../partials/back/patch.resolver.ts.hbs | 4 +- utils/generator/partials/back/problems.ts.hbs | 4 +- .../partials/resolvers/kuberest.ts.hbs | 34 + .../partials/resolvers/kubevirt.ts.hbs | 81 + utils/prepareData.ts | 23 +- vite.config.ts | 27 + 59 files changed, 46478 insertions(+), 18443 deletions(-) create mode 100644 data/kuberest.json create mode 100644 front/libs/kuberest/custom.ts create mode 100644 utils/generator/partials/resolvers/kuberest.ts.hbs create mode 100644 utils/generator/partials/resolvers/kubevirt.ts.hbs diff --git a/.gitignore b/.gitignore index 08b7369..d4be63a 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /front/pages/**/*.vue !/front/pages/core/*.vue !/front/pages/install/vynil/InstallNew.vue +core \ No newline at end of file diff --git a/back/main.ts b/back/main.ts index fef5a0c..ff3c6b2 100644 --- a/back/main.ts +++ b/back/main.ts @@ -51,6 +51,7 @@ const typeDefs = gqlWrapper( importGraphQL('operators.graphql'), importGraphQL('whereabouts.graphql'), importGraphQL('kubevirt.graphql'), + importGraphQL('kuberest.graphql'), importGraphQL('networkaddonsoperator.graphql'), ); diff --git a/back/resolvers/core/CrdObject.ts b/back/resolvers/core/CrdObject.ts index d2701f3..7d75251 100644 --- a/back/resolvers/core/CrdObject.ts +++ b/back/resolvers/core/CrdObject.ts @@ -14,28 +14,28 @@ export const mutations = { } try { const res = await k8sApi.createClusterCustomObject(args['group'],args['version'],args['plural'], payload) - return res.body + return {object: res.body} } catch (err) { if (typeof err === 'object' && (err as object)['body'] !=undefined && (err as object)['statusCode'] !=undefined) { if ((err as object)['statusCode'] != 404 && (err as object)['body']['reason']!='Forbidden') { log.error('error', (err as object)['body']); } } else {log.error('error', err)} + if (typeof err === 'object') return {error: err}; else return {error: {err}} } - return null }, clusteredCrdObjectDelete: async (_parent, args: object) => { try { const res = await k8sApi.deleteClusterCustomObject(args['group'],args['version'],args['plural'], args['name']) - return res.body + return {object: res.body} } catch (err) { if (typeof err === 'object' && (err as object)['body'] !=undefined && (err as object)['statusCode'] !=undefined) { if ((err as object)['statusCode'] != 404 && (err as object)['body']['reason']!='Forbidden') { log.error('error', (err as object)['body']); } } else {log.error('error', err)} + if (typeof err === 'object') return {error: err}; else return {error: {err}} } - return null }, clusteredCrdObjectPatch: async (_parent, args: object) => { const request = { @@ -50,15 +50,15 @@ export const mutations = { const payload = rfc6902.createPatch(resGet.body,request).filter(rule => !rule.path.startsWith('/status') && !['/metadata/creationTimestamp', '/metadata/finalizers', '/metadata/generation', '/metadata/managedFields', '/metadata/resourceVersion','/metadata/uid'].includes(rule.path) ) const options = { "headers": { "Content-type": k8s.PatchUtils.PATCH_FORMAT_JSON_PATCH}}; const res = await k8sApi.patchClusterCustomObject(args['group'],args['version'],args['plural'], args['metadata']['name'], payload, undefined, undefined, undefined, options) - return res.body + return {object: res.body} } catch (err) { if (typeof err === 'object' && (err as object)['body'] !=undefined && (err as object)['statusCode'] !=undefined) { if ((err as object)['statusCode'] != 404 && (err as object)['body']['reason']!='Forbidden') { log.error('error', (err as object)['body']); } } else {log.error('error', err)} + if (typeof err === 'object') return {error: err}; else return {error: {err}} } - return null }, namespacedCrdObjectCreate: async (_parent, args: object) => { const payload = { @@ -69,28 +69,28 @@ export const mutations = { } try { const res = await k8sApi.createNamespacedCustomObject(args['group'],args['version'],args['metadata']['namespace'],args['plural'], payload) - return res.body + return {object: res.body} } catch (err) { if (typeof err === 'object' && (err as object)['body'] !=undefined && (err as object)['statusCode'] !=undefined) { if ((err as object)['statusCode'] != 404 && (err as object)['body']['reason']!='Forbidden') { log.error('error', (err as object)['body']); } } else {log.error('error', err)} + if (typeof err === 'object') return {error: err}; else return {error: {err}} } - return null }, namespacedCrdObjectDelete: async (_parent, args: object) => { try { const res = await k8sApi.deleteNamespacedCustomObject(args['group'],args['version'],args['namespace'],args['plural'], args['name']) - return res.body + return {object: res.body} } catch (err) { if (typeof err === 'object' && (err as object)['body'] !=undefined && (err as object)['statusCode'] !=undefined) { if ((err as object)['statusCode'] != 404 && (err as object)['body']['reason']!='Forbidden') { log.error('error', (err as object)['body']); } } else {log.error('error', err)} + if (typeof err === 'object') return {error: err}; else return {error: {err}} } - return null }, namespacedCrdObjectPatch: async (_parent, args: object) => { const request = { @@ -105,15 +105,15 @@ export const mutations = { const payload = rfc6902.createPatch(resGet.body,request).filter(rule => !rule.path.startsWith('/status') && !['/metadata/creationTimestamp', '/metadata/finalizers', '/metadata/generation', '/metadata/managedFields', '/metadata/resourceVersion','/metadata/uid'].includes(rule.path) ) const options = { "headers": { "Content-type": k8s.PatchUtils.PATCH_FORMAT_JSON_PATCH}}; const res = await k8sApi.patchNamespacedCustomObject(args['group'],args['version'],args['metadata']['namespace'],args['plural'], args['metadata']['name'], payload, undefined, undefined, undefined, options) - return res.body + return {object: res.body} } catch (err) { if (typeof err === 'object' && (err as object)['body'] !=undefined && (err as object)['statusCode'] !=undefined) { if ((err as object)['statusCode'] != 404 && (err as object)['body']['reason']!='Forbidden') { log.error('error', (err as object)['body']); } } else {log.error('error', err)} + if (typeof err === 'object') return {error: err}; else return {error: {err}} } - return null }, }; export const lists = { diff --git a/back/schema/core.graphql b/back/schema/core.graphql index e568444..66ea091 100644 --- a/back/schema/core.graphql +++ b/back/schema/core.graphql @@ -56,7 +56,7 @@ input metadataInput { resourceVersion: String uid: String } -type ownerReference { +type ownerRef { apiVersion: String! blockOwnerDeletion: Boolean controller: Boolean @@ -71,7 +71,7 @@ type metadata { annotations: JSONObject labels: JSONObject creationTimestamp: String - ownerReferences: [ownerReference] + ownerReferences: [ownerRef] resourceVersion: String uid: String } @@ -176,13 +176,17 @@ type Query { vynilCategory(params: queryParameters): [vynilCategory] vynilPackage(params: queryParameters): [vynilPackage] } +type MutationResponse { + object: JSONObject + error: JSONObject +} type Mutation { - namespacedCrdObjectCreate(group: String!, version: String!, plural: String!, kind: String!, metadata: metadataInput!, spec: JSONObject): coreCrdObject - namespacedCrdObjectPatch(group: String!, version: String!, plural: String!, kind: String!, metadata: metadataInput!, spec: JSONObject): coreCrdObject - namespacedCrdObjectDelete(group: String!, version: String!, plural: String!, namespace: String!, name: String!): coreCrdObject - clusteredCrdObjectCreate(group: String!, version: String!, plural: String!, kind: String!, metadata: metadataInput!, spec: JSONObject): coreCrdObject - clusteredCrdObjectPatch(group: String!, version: String!, plural: String!, kind: String!, metadata: metadataInput!, spec: JSONObject): coreCrdObject - clusteredCrdObjectDelete(group: String!, version: String!, plural: String!, name: String!): coreCrdObject + namespacedCrdObjectCreate(group: String!, version: String!, plural: String!, kind: String!, metadata: metadataInput!, spec: JSONObject): MutationResponse + namespacedCrdObjectPatch(group: String!, version: String!, plural: String!, kind: String!, metadata: metadataInput!, spec: JSONObject): MutationResponse + namespacedCrdObjectDelete(group: String!, version: String!, plural: String!, namespace: String!, name: String!): MutationResponse + clusteredCrdObjectCreate(group: String!, version: String!, plural: String!, kind: String!, metadata: metadataInput!, spec: JSONObject): MutationResponse + clusteredCrdObjectPatch(group: String!, version: String!, plural: String!, kind: String!, metadata: metadataInput!, spec: JSONObject): MutationResponse + clusteredCrdObjectDelete(group: String!, version: String!, plural: String!, name: String!): MutationResponse } type Subscription { onLog(namespace: String!,pod_name: String!,name: String!): coreLog diff --git a/data/certmanager.json b/data/certmanager.json index 49c77ce..42f2fab 100644 --- a/data/certmanager.json +++ b/data/certmanager.json @@ -6,13 +6,8 @@ "name": "io.cert-manager.acme.v1.Challenge", "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": { "type": "object", @@ -496,14 +491,16 @@ "description": "Group is the group of the referent. When unspecified, \"gateway.networking.k8s.io\" is inferred. To set the core API group (such as for a \"Service\" kind referent), Group must be explicitly set to \"\" (empty string). \n Support: Core", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is kind of the referent. \n There are two kinds of parent resources with \"Core\" support: \n * Gateway (Gateway conformance profile) * Service (Mesh conformance profile, experimental, ClusterIP Services only) \n Support for other resources is Implementation-Specific.", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Gateway" }, "name": { "description": "Name is the name of the referent. \n Support: Core", @@ -1485,6 +1482,14 @@ ] } } + }, + "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" } }, "description": "Challenge is a type to represent a Challenge request with an ACME server", @@ -3120,13 +3125,8 @@ "name": "io.cert-manager.acme.v1.Order", "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": { "type": "object", @@ -3289,6 +3289,14 @@ "type": "string" } } + }, + "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" } }, "description": "Order is a type to represent an Order with an ACME server", @@ -3614,17 +3622,12 @@ "name": "io.cert-manager.v1.Certificate", "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": "Specification of the desired state of the Certificate resource. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired state of the Certificate resource. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "issuerRef", "secretName" @@ -4055,8 +4058,8 @@ } }, "status": { - "description": "Status of the Certificate. This is set and managed automatically. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Status of the Certificate. This is set and managed automatically. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "conditions": { "description": "List of status conditions to indicate the status of certificates. Known condition types are `Ready` and `Issuing`.", @@ -4140,6 +4143,14 @@ "type": "integer" } } + }, + "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" } }, "description": "A Certificate resource should be created to ensure an up to date and signed X.509 certificate is stored in the Kubernetes Secret resource named in `spec.secretName`. \n The stored certificate will be renewed before it expires (as configured by `spec.renewBefore`).", @@ -4830,17 +4841,12 @@ "name": "io.cert-manager.v1.CertificateRequest", "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": "Specification of the desired state of the CertificateRequest resource. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired state of the CertificateRequest resource. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "issuerRef", "request" @@ -4942,8 +4948,8 @@ } }, "status": { - "description": "Status of the CertificateRequest. This is set and managed automatically. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Status of the CertificateRequest. This is set and managed automatically. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "ca": { "description": "The PEM encoded X.509 certificate of the signer, also known as the CA (Certificate Authority). This is set on a best-effort basis by different issuers. If not set, the CA is assumed to be unknown/not available.", @@ -5005,6 +5011,14 @@ "format": "date-time" } } + }, + "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" } }, "description": "A CertificateRequest is used to request a signed certificate from one of the configured issuers. \n All fields within the CertificateRequest's `spec` are immutable after creation. A CertificateRequest will either succeed or fail, as denoted by its `Ready` status condition and its `status.failureTime` field. \n A CertificateRequest is a one-shot resource, meaning it represents a single point in time request for a certificate and cannot be re-used.", @@ -5362,17 +5376,12 @@ "name": "io.cert-manager.v1.ClusterIssuer", "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": "Desired state of the ClusterIssuer resource.", "type": "object", + "description": "Desired state of the ClusterIssuer resource.", "properties": { "acme": { "description": "ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.", @@ -5908,14 +5917,16 @@ "description": "Group is the group of the referent. When unspecified, \"gateway.networking.k8s.io\" is inferred. To set the core API group (such as for a \"Service\" kind referent), Group must be explicitly set to \"\" (empty string). \n Support: Core", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is kind of the referent. \n There are two kinds of parent resources with \"Core\" support: \n * Gateway (Gateway conformance profile) * Service (Mesh conformance profile, experimental, ClusterIP Services only) \n Support for other resources is Implementation-Specific.", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Gateway" }, "name": { "description": "Name is the name of the referent. \n Support: Core", @@ -7125,8 +7136,8 @@ } }, "status": { - "description": "Status of the ClusterIssuer. This is set and managed automatically.", "type": "object", + "description": "Status of the ClusterIssuer. This is set and managed automatically.", "properties": { "acme": { "description": "ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.", @@ -7196,6 +7207,14 @@ "x-kubernetes-list-type": "map" } } + }, + "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" } }, "description": "A ClusterIssuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is similar to an Issuer, however it is cluster-scoped and therefore can be referenced by resources that exist in *any* namespace, not just the same namespace as the referent.", @@ -9172,17 +9191,12 @@ "name": "io.cert-manager.v1.Issuer", "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": "Desired state of the Issuer resource.", "type": "object", + "description": "Desired state of the Issuer resource.", "properties": { "acme": { "description": "ACME configures this issuer to communicate with a RFC8555 (ACME) server to obtain signed x509 certificates.", @@ -9718,14 +9732,16 @@ "description": "Group is the group of the referent. When unspecified, \"gateway.networking.k8s.io\" is inferred. To set the core API group (such as for a \"Service\" kind referent), Group must be explicitly set to \"\" (empty string). \n Support: Core", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is kind of the referent. \n There are two kinds of parent resources with \"Core\" support: \n * Gateway (Gateway conformance profile) * Service (Mesh conformance profile, experimental, ClusterIP Services only) \n Support for other resources is Implementation-Specific.", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Gateway" }, "name": { "description": "Name is the name of the referent. \n Support: Core", @@ -10935,8 +10951,8 @@ } }, "status": { - "description": "Status of the Issuer. This is set and managed automatically.", "type": "object", + "description": "Status of the Issuer. This is set and managed automatically.", "properties": { "acme": { "description": "ACME specific status options. This field should only be set if the Issuer is configured to use an ACME server to issue certificates.", @@ -11006,6 +11022,14 @@ "x-kubernetes-list-type": "map" } } + }, + "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" } }, "description": "An Issuer represents a certificate issuing authority which can be referenced as part of `issuerRef` fields. It is scoped to a single namespace and can therefore only be referenced by resources within the same namespace.", diff --git a/data/cnpg.json b/data/cnpg.json index 45f2dcd..7d6c60d 100644 --- a/data/cnpg.json +++ b/data/cnpg.json @@ -6,17 +6,12 @@ "name": "io.cnpg.postgresql.v1.Backup", "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": "Specification of the desired behavior of the backup. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired behavior of the backup. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "cluster" ], @@ -40,7 +35,8 @@ "enum": [ "barmanObjectStore", "volumeSnapshot" - ] + ], + "default": "barmanObjectStore" }, "online": { "description": "Whether the default type of backup with volume snapshots is online/hot (`true`, default) or offline/cold (`false`) Overrides the default setting specified in the cluster field '.spec.backup.volumeSnapshot.online'", @@ -56,7 +52,8 @@ }, "waitForArchive": { "description": "If false, the function will return immediately after the backup is completed, without waiting for WAL to be archived. This behavior is only useful with backup software that independently monitors WAL archiving. Otherwise, WAL required to make the backup consistent might be missing and make the backup useless. By default, or when this parameter is true, pg_backup_stop will wait for WAL to be archived when archiving is enabled. On a standby, this means that it will wait only when archive_mode = always. If write activity on the primary is low, it may be useful to run pg_switch_wal on the primary in order to trigger an immediate segment switch.", - "type": "boolean" + "type": "boolean", + "default": true } } }, @@ -71,8 +68,8 @@ } }, "status": { - "description": "Most recently observed status of the backup. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Most recently observed status of the backup. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "azureCredentials": { "description": "The credentials to use to upload data to Azure Blob Storage", @@ -415,6 +412,14 @@ "format": "byte" } } + }, + "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" } }, "description": "Backup is the Schema for the backups API", @@ -978,17 +983,12 @@ "name": "io.cnpg.postgresql.v1.Cluster", "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": "Specification of the desired behavior of the cluster. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired behavior of the cluster. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "instances" ], @@ -2022,7 +2022,8 @@ "enum": [ "primary", "prefer-standby" - ] + ], + "default": "prefer-standby" }, "volumeSnapshot": { "description": "VolumeSnapshot provides the configuration for the execution of volume snapshot backups.", @@ -2048,7 +2049,8 @@ }, "online": { "description": "Whether the default type of backup with volume snapshots is online/hot (`true`, default) or offline/cold (`false`)", - "type": "boolean" + "type": "boolean", + "default": true }, "onlineConfiguration": { "description": "Configuration parameters to control the online/hot backup with volume snapshots", @@ -2060,8 +2062,13 @@ }, "waitForArchive": { "description": "If false, the function will return immediately after the backup is completed, without waiting for WAL to be archived. This behavior is only useful with backup software that independently monitors WAL archiving. Otherwise, WAL required to make the backup consistent might be missing and make the backup useless. By default, or when this parameter is true, pg_backup_stop will wait for WAL to be archived when archiving is enabled. On a standby, this means that it will wait only when archive_mode = always. If write activity on the primary is low, it may be useful to run pg_switch_wal on the primary in order to trigger an immediate segment switch.", - "type": "boolean" + "type": "boolean", + "default": true } + }, + "default": { + "immediateCheckpoint": false, + "waitForArchive": true } }, "snapshotOwnerReference": { @@ -2071,7 +2078,8 @@ "none", "cluster", "backup" - ] + ], + "default": "none" }, "tablespaceClassName": { "description": "TablespaceClassName specifies the Snapshot Class to be used for the tablespaces. defaults to the PGDATA Snapshot Class, if set", @@ -2530,7 +2538,8 @@ }, "enableSuperuserAccess": { "description": "When this option is enabled, the operator will use the `SuperuserSecret` to update the `postgres` user password (if the secret is not present, the operator will automatically create one). When this option is disabled, the operator will ignore the `SuperuserSecret` content, delete it when automatically created, and then blank the password of the `postgres` user by setting it to `NULL`. Disabled by default.", - "type": "boolean" + "type": "boolean", + "default": false }, "env": { "description": "Env follows the Env format to pass environment variables to the pods created in the cluster", @@ -2608,7 +2617,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -2793,7 +2810,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -2801,7 +2826,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2874,12 +2907,28 @@ "shm": { "description": "Shm is the size limit of the shared memory volume", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "temporaryData": { "description": "TemporaryData is the size limit of the temporary data volume", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -3305,7 +3354,8 @@ "failoverDelay": { "description": "The amount of time (in seconds) to wait before triggering a failover after the primary PostgreSQL instance in the cluster was detected to be unhealthy", "type": "integer", - "format": "int32" + "format": "int32", + "default": 0 }, "imageName": { "description": "Name of the container image, supporting both tags (`:`) and digests for deterministic and repeatable deployments (`:@sha256:`)", @@ -3353,7 +3403,8 @@ "instances": { "description": "Number of instances required in the cluster", "type": "integer", - "minimum": 1 + "minimum": 1, + "default": 1 }, "logLevel": { "description": "The instances' log level, one of the following values: error, warning, info (default), debug, trace", @@ -3364,7 +3415,8 @@ "info", "debug", "trace" - ] + ], + "default": "info" }, "managed": { "description": "The configuration that is used by the portions of PostgreSQL that are managed by the instance manager", @@ -3391,7 +3443,8 @@ "connectionLimit": { "description": "If the role can log in, this specifies how many concurrent connections the role can make. `-1` (the default) means no limit.", "type": "integer", - "format": "int64" + "format": "int64", + "default": -1 }, "createdb": { "description": "When set to `true`, the role being defined will be allowed to create new databases. Specifying `false` (default) will deny a role the ability to create databases.", @@ -3411,7 +3464,8 @@ "enum": [ "present", "absent" - ] + ], + "default": "present" }, "inRoles": { "description": "List of one or more existing roles to which this role will be immediately added as a new member. Default empty.", @@ -3422,7 +3476,8 @@ }, "inherit": { "description": "Whether a role \"inherits\" the privileges of roles it is a member of. Defaults is `true`.", - "type": "boolean" + "type": "boolean", + "default": true }, "login": { "description": "Whether the role is allowed to log in. A role having the `login` attribute can be thought of as a user. Roles without this attribute are useful for managing database privileges, but are not users in the usual sense of the word. Default is `false`.", @@ -3466,12 +3521,14 @@ "maxSyncReplicas": { "description": "The target value for the synchronous replication quorum, that can be decreased if the number of ready standbys is lower than this. Undefined or 0 disable synchronous replication.", "type": "integer", - "minimum": 0 + "minimum": 0, + "default": 0 }, "minSyncReplicas": { "description": "Minimum number of instances required in synchronous replication with the primary. Undefined or 0 allow writes to complete when no standby is available.", "type": "integer", - "minimum": 0 + "minimum": 0, + "default": 0 }, "monitoring": { "description": "The configuration of the monitoring infrastructure of this cluster", @@ -3523,11 +3580,13 @@ }, "disableDefaultQueries": { "description": "Whether the default queries should be injected. Set it to `true` if you don't want to inject default queries into the cluster. Default: false.", - "type": "boolean" + "type": "boolean", + "default": false }, "enablePodMonitor": { "description": "Enable or disable the `PodMonitor`", - "type": "boolean" + "type": "boolean", + "default": false }, "podMonitorMetricRelabelings": { "description": "The list of metric relabelings for the `PodMonitor`. Applied to samples before ingestion.", @@ -3562,7 +3621,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -3630,7 +3690,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -3673,23 +3734,27 @@ "properties": { "inProgress": { "description": "Is there a node maintenance activity in progress?", - "type": "boolean" + "type": "boolean", + "default": false }, "reusePVC": { "description": "Reuse the existing PVC (wait for the node to come up again) or not (recreate it elsewhere - when `instances` >1)", - "type": "boolean" + "type": "boolean", + "default": true } } }, "postgresGID": { "description": "The GID of the `postgres` user inside the image, defaults to `26`", "type": "integer", - "format": "int64" + "format": "int64", + "default": 26 }, "postgresUID": { "description": "The UID of the `postgres` user inside the image, defaults to `26`", "type": "integer", - "format": "int64" + "format": "int64", + "default": 26 }, "postgresql": { "description": "Configuration of the PostgreSQL server", @@ -3844,7 +3909,8 @@ "enum": [ "switchover", "restart" - ] + ], + "default": "restart" }, "primaryUpdateStrategy": { "description": "Deployment strategy to follow to upgrade the primary server during a rolling update procedure, after all replicas have been successfully updated: it can be automated (`unsupervised` - default) or manual (`supervised`)", @@ -3852,7 +3918,8 @@ "enum": [ "unsupervised", "supervised" - ] + ], + "default": "unsupervised" }, "priorityClassName": { "description": "Name of the priority class which will be used in every generated Pod, if the PriorityClass specified does not exist, the pod will not be able to schedule. Please refer to https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass for more information", @@ -3971,7 +4038,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -4083,19 +4158,30 @@ "properties": { "enabled": { "description": "If enabled (default), the operator will automatically manage replication slots on the primary instance and use them in streaming replication connections with all the standby instances that are part of the HA cluster. If disabled, the operator will not take advantage of replication slots in streaming connections with the replicas. This feature also controls replication slots in replica cluster, from the designated primary to its cascading replicas.", - "type": "boolean" + "type": "boolean", + "default": true }, "slotPrefix": { "description": "Prefix for replication slots managed by the operator for HA. It may only contain lower case letters, numbers, and the underscore character. This can only be set at creation time. By default set to `_cnpg_`.", "type": "string", - "pattern": "^[0-9a-z_]*$" + "pattern": "^[0-9a-z_]*$", + "default": "_cnpg_" } + }, + "default": { + "enabled": true } }, "updateInterval": { "description": "Standby will update the status of the local replication slots every `updateInterval` seconds (default 30).", "type": "integer", - "minimum": 1 + "minimum": 1, + "default": 30 + } + }, + "default": { + "highAvailability": { + "enabled": true } } }, @@ -4129,7 +4215,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -4137,7 +4231,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4195,17 +4297,20 @@ "smartShutdownTimeout": { "description": "The time in seconds that controls the window of time reserved for the smart shutdown of Postgres to complete. Make sure you reserve enough time for the operator to request a fast shutdown of Postgres (that is: `stopDelay` - `smartShutdownTimeout`).", "type": "integer", - "format": "int32" + "format": "int32", + "default": 180 }, "startDelay": { "description": "The time in seconds that is allowed for a PostgreSQL instance to successfully start up (default 3600). The startup probe failure threshold is derived from this value using the formula: ceiling(startDelay / 10).", "type": "integer", - "format": "int32" + "format": "int32", + "default": 3600 }, "stopDelay": { "description": "The time in seconds that is allowed for a PostgreSQL instance to gracefully shutdown (default 1800)", "type": "integer", - "format": "int32" + "format": "int32", + "default": 1800 }, "storage": { "description": "Configuration of the storage of the instances", @@ -4301,7 +4406,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -4309,7 +4422,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4373,7 +4494,8 @@ }, "resizeInUseVolumes": { "description": "Resize existent PVCs, defaults to true", - "type": "boolean" + "type": "boolean", + "default": true }, "size": { "description": "Size of the storage. Required if not already specified in the PVC template. Changes to this field are automatically reapplied to the created PVCs. Size cannot be decreased.", @@ -4401,7 +4523,8 @@ "switchoverDelay": { "description": "The time in seconds that is allowed for a primary PostgreSQL instance to gracefully shutdown during a switchover. Default value is 3600 seconds (1 hour).", "type": "integer", - "format": "int32" + "format": "int32", + "default": 3600 }, "tablespaces": { "description": "The tablespaces configuration", @@ -4521,7 +4644,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -4529,7 +4660,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4593,7 +4732,8 @@ }, "resizeInUseVolumes": { "description": "Resize existent PVCs, defaults to true", - "type": "boolean" + "type": "boolean", + "default": true }, "size": { "description": "Size of the storage. Required if not already specified in the PVC template. Changes to this field are automatically reapplied to the created PVCs. Size cannot be decreased.", @@ -4607,7 +4747,8 @@ }, "temporary": { "description": "When set to true, the tablespace will be added as a `temp_tablespaces` entry in PostgreSQL, and will be available to automatically house temp database objects, or other temporary files. Please refer to PostgreSQL documentation for more information on the `temp_tablespaces` GUC.", - "type": "boolean" + "type": "boolean", + "default": false } } } @@ -4798,7 +4939,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -4806,7 +4955,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4870,7 +5027,8 @@ }, "resizeInUseVolumes": { "description": "Resize existent PVCs, defaults to true", - "type": "boolean" + "type": "boolean", + "default": true }, "size": { "description": "Size of the storage. Required if not already specified in the PVC template. Changes to this field are automatically reapplied to the created PVCs. Size cannot be decreased.", @@ -4885,8 +5043,8 @@ } }, "status": { - "description": "Most recently observed status of the cluster. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Most recently observed status of the cluster. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "azurePVCUpdateEnabled": { "description": "AzurePVCUpdateEnabled shows if the PVC online upgrade is enabled for this cluster", @@ -5350,6 +5508,14 @@ "type": "string" } } + }, + "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" } }, "description": "Cluster is the Schema for the PostgreSQL API", @@ -10044,17 +10210,12 @@ "name": "io.cnpg.postgresql.v1.Pooler", "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": "Specification of the desired behavior of the Pooler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired behavior of the Pooler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "cluster", "pgbouncer" @@ -10083,11 +10244,27 @@ "properties": { "maxSurge": { "description": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "maxUnavailable": { "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10100,7 +10277,8 @@ "instances": { "description": "The number of replicas we want. Default: 1.", "type": "integer", - "format": "int32" + "format": "int32", + "default": 1 }, "monitoring": { "description": "The configuration of the monitoring infrastructure of this pooler.", @@ -10108,7 +10286,8 @@ "properties": { "enablePodMonitor": { "description": "Enable or disable the `PodMonitor`", - "type": "boolean" + "type": "boolean", + "default": false }, "podMonitorMetricRelabelings": { "description": "The list of metric relabelings for the `PodMonitor`. Applied to samples before ingestion.", @@ -10143,7 +10322,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -10211,7 +10391,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -10278,7 +10459,8 @@ }, "paused": { "description": "When set to `true`, PgBouncer will disconnect from the PostgreSQL server, first waiting for all queries to complete, and pause all new client connections until this value is set to `false` (default). Internally, the operator calls PgBouncer's `PAUSE` and `RESUME` commands.", - "type": "boolean" + "type": "boolean", + "default": false }, "pg_hba": { "description": "PostgreSQL Host Based Authentication rules (lines to be appended to the pg_hba.conf file)", @@ -10293,7 +10475,8 @@ "enum": [ "session", "transaction" - ] + ], + "default": "session" } } }, @@ -11094,7 +11277,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -11242,7 +11433,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -11263,7 +11462,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11325,7 +11532,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -11346,7 +11561,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11433,7 +11656,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -11469,7 +11700,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -11519,7 +11758,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -11608,7 +11848,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -11644,7 +11892,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -11713,7 +11969,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -11721,7 +11985,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11928,7 +12200,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -11964,7 +12244,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -12212,7 +12500,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -12360,7 +12656,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -12381,7 +12685,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -12443,7 +12755,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -12464,7 +12784,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -12551,7 +12879,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -12587,7 +12923,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -12637,7 +12981,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -12726,7 +13071,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -12762,7 +13115,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -12831,7 +13192,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -12839,7 +13208,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -13046,7 +13423,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -13082,7 +13467,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -13345,7 +13738,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -13493,7 +13894,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -13514,7 +13923,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -13576,7 +13993,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -13597,7 +14022,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -13684,7 +14117,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -13720,7 +14161,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -13770,7 +14219,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -13859,7 +14309,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -13895,7 +14353,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -13964,7 +14430,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -13972,7 +14446,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -14179,7 +14661,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -14215,7 +14705,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -14348,7 +14846,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "preemptionPolicy": { @@ -15035,7 +15541,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -15060,7 +15574,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -15169,7 +15691,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -15177,7 +15707,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -15675,7 +16213,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -16019,13 +16565,14 @@ "enum": [ "rw", "ro" - ] + ], + "default": "rw" } } }, "status": { - "description": "Most recently observed status of the Pooler. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Most recently observed status of the Pooler. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "instances": { "description": "The number of pods trying to be scheduled", @@ -16101,6 +16648,14 @@ } } } + }, + "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" } }, "description": "Pooler is the Schema for the poolers API", @@ -22680,17 +23235,12 @@ "name": "io.cnpg.postgresql.v1.ScheduledBackup", "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": "Specification of the desired behavior of the ScheduledBackup. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired behavior of the ScheduledBackup. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "cluster", "schedule" @@ -22703,7 +23253,8 @@ "none", "self", "cluster" - ] + ], + "default": "none" }, "cluster": { "description": "The cluster to backup", @@ -22728,7 +23279,8 @@ "enum": [ "barmanObjectStore", "volumeSnapshot" - ] + ], + "default": "barmanObjectStore" }, "online": { "description": "Whether the default type of backup with volume snapshots is online/hot (`true`, default) or offline/cold (`false`) Overrides the default setting specified in the cluster field '.spec.backup.volumeSnapshot.online'", @@ -22744,7 +23296,8 @@ }, "waitForArchive": { "description": "If false, the function will return immediately after the backup is completed, without waiting for WAL to be archived. This behavior is only useful with backup software that independently monitors WAL archiving. Otherwise, WAL required to make the backup consistent might be missing and make the backup useless. By default, or when this parameter is true, pg_backup_stop will wait for WAL to be archived when archiving is enabled. On a standby, this means that it will wait only when archive_mode = always. If write activity on the primary is low, it may be useful to run pg_switch_wal on the primary in order to trigger an immediate segment switch.", - "type": "boolean" + "type": "boolean", + "default": true } } }, @@ -22767,8 +23320,8 @@ } }, "status": { - "description": "Most recently observed status of the ScheduledBackup. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Most recently observed status of the ScheduledBackup. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "lastCheckTime": { "description": "The latest time the schedule", @@ -22786,6 +23339,14 @@ "format": "date-time" } } + }, + "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" } }, "description": "ScheduledBackup is the Schema for the scheduledbackups API", diff --git a/data/fission.json b/data/fission.json index bd89154..07c0002 100644 --- a/data/fission.json +++ b/data/fission.json @@ -6,17 +6,12 @@ "name": "io.fission.v1.CanaryConfig", "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": "CanaryConfigSpec defines the canary configuration spec", "type": "object", + "description": "CanaryConfigSpec defines the canary configuration spec", "required": [ "newfunction", "oldfunction", @@ -53,6 +48,14 @@ } } }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, "status": { "description": "CanaryConfigStatus represents canary config status", "type": "object", @@ -219,17 +222,12 @@ "name": "io.fission.v1.Environment", "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": "EnvironmentSpec contains with builder, runtime and some other related environment settings.", "type": "object", + "description": "EnvironmentSpec contains with builder, runtime and some other related environment settings.", "required": [ "runtime", "version" @@ -348,7 +346,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -496,7 +502,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -531,7 +545,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -593,7 +615,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -628,7 +658,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -715,7 +753,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -751,7 +797,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -801,7 +855,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -890,7 +945,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -926,7 +989,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -995,7 +1066,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -1003,7 +1082,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1210,7 +1297,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -1246,7 +1341,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -2189,7 +2292,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -2337,7 +2448,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -2372,7 +2491,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2434,7 +2561,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -2469,7 +2604,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2556,7 +2699,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -2592,7 +2743,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -2642,7 +2801,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -2731,7 +2891,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -2767,7 +2935,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -2836,7 +3012,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -2844,7 +3028,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -3051,7 +3243,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -3087,7 +3287,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -3335,7 +3543,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -3483,7 +3699,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -3518,7 +3742,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -3580,7 +3812,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -3615,7 +3855,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -3702,7 +3950,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -3738,7 +3994,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -3788,7 +4052,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -3877,7 +4142,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -3913,7 +4186,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -3982,7 +4263,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -3990,7 +4279,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4197,7 +4494,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -4233,7 +4538,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4496,7 +4809,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -4644,7 +4965,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -4679,7 +5008,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4741,7 +5078,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -4776,7 +5121,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4863,7 +5216,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -4899,7 +5260,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4949,7 +5318,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -5038,7 +5408,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -5074,7 +5452,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -5143,7 +5529,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -5151,7 +5545,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -5358,7 +5760,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -5394,7 +5804,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -5527,7 +5945,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "preemptionPolicy": { @@ -6214,7 +6640,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -6239,7 +6673,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume.\nThe size limit is also applicable for memory medium.\nThe maximum usage on memory medium EmptyDir would be the minimum value between\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\nThe default is nil which means that the limit is undefined.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6327,7 +6769,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -6335,7 +6785,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -6905,7 +7363,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -7285,7 +7751,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -7293,7 +7767,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -7402,7 +7884,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -7550,7 +8040,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -7585,7 +8083,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -7647,7 +8153,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -7682,7 +8196,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -7769,7 +8291,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -7805,7 +8335,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -7855,7 +8393,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -7944,7 +8483,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -7980,7 +8527,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -8049,7 +8604,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -8057,7 +8620,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -8264,7 +8835,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -8300,7 +8879,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -9243,7 +9830,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -9391,7 +9986,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -9426,7 +10029,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -9488,7 +10099,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -9523,7 +10142,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -9610,7 +10237,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -9646,7 +10281,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -9696,7 +10339,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -9785,7 +10429,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -9821,7 +10473,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -9890,7 +10550,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -9898,7 +10566,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -10105,7 +10781,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -10141,7 +10825,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10389,7 +11081,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -10537,7 +11237,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -10572,7 +11280,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -10634,7 +11350,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -10669,7 +11393,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -10756,7 +11488,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -10792,7 +11532,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10842,7 +11590,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -10931,7 +11680,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -10967,7 +11724,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -11036,7 +11801,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -11044,7 +11817,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11251,7 +12032,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -11287,7 +12076,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -11550,7 +12347,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -11698,7 +12503,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -11733,7 +12546,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11795,7 +12616,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -11830,7 +12659,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11917,7 +12754,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -11953,7 +12798,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -12003,7 +12856,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -12092,7 +12946,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -12128,7 +12990,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -12197,7 +13067,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -12205,7 +13083,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -12412,7 +13298,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -12448,7 +13342,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -12581,7 +13483,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "preemptionPolicy": { @@ -13268,7 +14178,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -13293,7 +14211,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume.\nThe size limit is also applicable for memory medium.\nThe maximum usage on memory medium EmptyDir would be the minimum value between\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\nThe default is nil which means that the limit is undefined.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -13381,7 +14307,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -13389,7 +14323,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -13959,7 +14901,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -14307,6 +15257,17 @@ "type": "integer" } } + }, + "status": { + "type": "object" + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Environment is environment for building and running user functions.", @@ -29422,7 +30383,8 @@ "apiKind": "Environment", "apiVersion": "v1", "readProperties": { - "spec": "spec" + "spec": "spec", + "status": "status" }, "writeProperties": { "spec": "spec" @@ -29434,7 +30396,8 @@ "simpleExcludes": [], "gqlDefs": { "metadata": "metadata!", - "spec": "JSONObject" + "spec": "JSONObject", + "status": "JSONObject" }, "namespaced": true }, @@ -29443,17 +30406,12 @@ "name": "io.fission.v1.Function", "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": "FunctionSpec describes the contents of the function.", "type": "object", + "description": "FunctionSpec describes the contents of the function.", "required": [ "InvokeStrategy", "environment", @@ -29626,7 +30584,15 @@ "averageValue": { "description": "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "type": { "description": "type represents whether the metric type is Utilization, Value, or AverageValue", @@ -29635,7 +30601,15 @@ "value": { "description": "value is the target value of the metric (as a quantity).", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -29720,7 +30694,15 @@ "averageValue": { "description": "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "type": { "description": "type represents whether the metric type is Utilization, Value, or AverageValue", @@ -29729,7 +30711,15 @@ "value": { "description": "value is the target value of the metric (as a quantity).", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -29837,7 +30827,15 @@ "averageValue": { "description": "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "type": { "description": "type represents whether the metric type is Utilization, Value, or AverageValue", @@ -29846,7 +30844,15 @@ "value": { "description": "value is the target value of the metric (as a quantity).", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -29931,7 +30937,15 @@ "averageValue": { "description": "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "type": { "description": "type represents whether the metric type is Utilization, Value, or AverageValue", @@ -29940,7 +30954,15 @@ "value": { "description": "value is the target value of the metric (as a quantity).", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -29973,7 +30995,15 @@ "averageValue": { "description": "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "type": { "description": "type represents whether the metric type is Utilization, Value, or AverageValue", @@ -29982,7 +31012,15 @@ "value": { "description": "value is the target value of the metric (as a quantity).", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -30008,7 +31046,25 @@ "type": "integer" }, "configmaps": { - "description": "Reference to a list of configmaps." + "description": "Reference to a list of configmaps.", + "type": "array", + "items": { + "description": "ConfigMapReference is a reference to a kubernetes configmap.", + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "nullable": true }, "environment": { "description": "Environment is the build and runtime environment that this function is\nassociated with. An Environment with this name should exist, otherwise the\nfunction cannot be invoked.", @@ -30901,7 +31957,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -31049,7 +32113,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -31084,7 +32156,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -31146,7 +32226,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -31181,7 +32269,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -31268,7 +32364,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -31304,7 +32408,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -31354,7 +32466,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -31443,7 +32556,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -31479,7 +32600,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -31548,7 +32677,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -31556,7 +32693,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -31763,7 +32908,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -31799,7 +32952,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -32047,7 +33208,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -32195,7 +33364,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -32230,7 +33407,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -32292,7 +33477,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -32327,7 +33520,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -32414,7 +33615,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -32450,7 +33659,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -32500,7 +33717,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -32589,7 +33807,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -32625,7 +33851,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -32694,7 +33928,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -32702,7 +33944,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -32909,7 +34159,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -32945,7 +34203,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -33208,7 +34474,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -33356,7 +34630,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -33391,7 +34673,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -33453,7 +34743,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -33488,7 +34786,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -33575,7 +34881,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -33611,7 +34925,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -33661,7 +34983,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -33750,7 +35073,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -33786,7 +35117,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -33855,7 +35194,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -33863,7 +35210,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -34070,7 +35425,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -34106,7 +35469,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -34239,7 +35610,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "preemptionPolicy": { @@ -34926,7 +36305,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -34951,7 +36338,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume.\nThe size limit is also applicable for memory medium.\nThe maximum usage on memory medium EmptyDir would be the minimum value between\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\nThe default is nil which means that the limit is undefined.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -35039,7 +36434,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -35047,7 +36450,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -35617,7 +37028,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -35987,7 +37406,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -35995,7 +37422,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -36005,9 +37440,38 @@ "type": "integer" }, "secrets": { - "description": "Reference to a list of secrets." + "description": "Reference to a list of secrets.", + "type": "array", + "items": { + "description": "SecretReference is a reference to a kubernetes secret.", + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "nullable": true } } + }, + "status": { + "type": "object" + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Function is function runs within environment runtime with given package and secrets/configmaps.", @@ -43149,7 +44613,8 @@ "apiKind": "Function", "apiVersion": "v1", "readProperties": { - "spec": "spec" + "spec": "spec", + "status": "status" }, "writeProperties": { "spec": "spec" @@ -43161,7 +44626,8 @@ "simpleExcludes": [], "gqlDefs": { "metadata": "metadata!", - "spec": "JSONObject" + "spec": "JSONObject", + "status": "JSONObject" }, "namespaced": true }, @@ -43170,17 +44636,12 @@ "name": "io.fission.v1.HTTPTrigger", "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": "HTTPTriggerSpec is for router to expose user functions at the given URL path.", "type": "object", + "description": "HTTPTriggerSpec is for router to expose user functions at the given URL path.", "required": [ "functionref" ], @@ -43201,7 +44662,9 @@ "description": "Function Reference by weight. this map contains function name as key and its weight\nas the value. This is for canary upgrade purpose.", "additionalProperties": { "type": "integer" - } + }, + "type": "object", + "nullable": true }, "name": { "description": "Name of the function.", @@ -43225,7 +44688,9 @@ "description": "Annotations will be added to metadata when creating Ingress.", "additionalProperties": { "type": "string" - } + }, + "type": "object", + "nullable": true }, "host": { "description": "Host is for ingress controller to apply rules. If\nhost is empty or \"*\", the rule applies to all\ninbound HTTP traffic.", @@ -43265,6 +44730,17 @@ "type": "string" } } + }, + "status": { + "type": "object" + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "HTTPTrigger is the trigger invokes user functions when receiving HTTP requests.", @@ -43439,7 +44915,8 @@ "apiKind": "HTTPTrigger", "apiVersion": "v1", "readProperties": { - "spec": "spec" + "spec": "spec", + "status": "status" }, "writeProperties": { "spec": "spec" @@ -43451,7 +44928,8 @@ "simpleExcludes": [], "gqlDefs": { "metadata": "metadata!", - "spec": "JSONObject" + "spec": "JSONObject", + "status": "JSONObject" }, "namespaced": true }, @@ -43460,17 +44938,12 @@ "name": "io.fission.v1.KubernetesWatchTrigger", "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": "KubernetesWatchTriggerSpec defines spec of KuberenetesWatchTrigger", "type": "object", + "description": "KubernetesWatchTriggerSpec defines spec of KuberenetesWatchTrigger", "required": [ "functionref", "namespace", @@ -43489,7 +44962,9 @@ "description": "Function Reference by weight. this map contains function name as key and its weight\nas the value. This is for canary upgrade purpose.", "additionalProperties": { "type": "integer" - } + }, + "type": "object", + "nullable": true }, "name": { "description": "Name of the function.", @@ -43516,6 +44991,17 @@ "type": "string" } } + }, + "status": { + "type": "object" + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "KubernetesWatchTrigger watches kubernetes resource events and invokes functions.", @@ -43649,7 +45135,8 @@ "apiKind": "KubernetesWatchTrigger", "apiVersion": "v1", "readProperties": { - "spec": "spec" + "spec": "spec", + "status": "status" }, "writeProperties": { "spec": "spec" @@ -43661,7 +45148,8 @@ "simpleExcludes": [], "gqlDefs": { "metadata": "metadata!", - "spec": "JSONObject" + "spec": "JSONObject", + "status": "JSONObject" }, "namespaced": true }, @@ -43670,17 +45158,12 @@ "name": "io.fission.v1.MessageQueueTrigger", "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": "MessageQueueTriggerSpec defines a binding from a topic in a\nmessage queue to a function.", "type": "object", + "description": "MessageQueueTriggerSpec defines a binding from a topic in a\nmessage queue to a function.", "required": [ "topic" ], @@ -43710,7 +45193,9 @@ "description": "Function Reference by weight. this map contains function name as key and its weight\nas the value. This is for canary upgrade purpose.", "additionalProperties": { "type": "integer" - } + }, + "type": "object", + "nullable": true }, "name": { "description": "Name of the function.", @@ -44588,7 +46073,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -44736,7 +46229,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -44771,7 +46272,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -44833,7 +46342,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -44868,7 +46385,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -44955,7 +46480,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -44991,7 +46524,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -45041,7 +46582,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -45130,7 +46672,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -45166,7 +46716,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -45235,7 +46793,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -45243,7 +46809,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -45450,7 +47024,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -45486,7 +47068,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -45734,7 +47324,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -45882,7 +47480,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -45917,7 +47523,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -45979,7 +47593,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -46014,7 +47636,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -46101,7 +47731,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -46137,7 +47775,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -46187,7 +47833,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -46276,7 +47923,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -46312,7 +47967,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -46381,7 +48044,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -46389,7 +48060,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -46596,7 +48275,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -46632,7 +48319,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -46895,7 +48590,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -47043,7 +48746,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -47078,7 +48789,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -47140,7 +48859,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -47175,7 +48902,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -47262,7 +48997,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -47298,7 +49041,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -47348,7 +49099,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -47437,7 +49189,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -47473,7 +49233,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -47542,7 +49310,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -47550,7 +49326,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -47757,7 +49541,15 @@ }, "port": { "description": "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host.\nDefaults to HTTP.", @@ -47793,7 +49585,15 @@ }, "port": { "description": "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -47926,7 +49726,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "preemptionPolicy": { @@ -48613,7 +50421,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -48638,7 +50454,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume.\nThe size limit is also applicable for memory medium.\nThe maximum usage on memory medium EmptyDir would be the minimum value between\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\nThe default is nil which means that the limit is undefined.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -48726,7 +50550,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -48734,7 +50566,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -49304,7 +51144,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -49658,6 +51506,14 @@ "type": "string" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "MessageQueueTrigger invokes functions when messages arrive to certain topic that trigger subscribes to.", @@ -56104,17 +57960,12 @@ "name": "io.fission.v1.Package", "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": "PackageSpec includes source/deploy archives and the reference of environment to build the package.", "type": "object", + "description": "PackageSpec includes source/deploy archives and the reference of environment to build the package.", "required": [ "environment" ], @@ -56205,6 +58056,14 @@ } } }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, "status": { "description": "Status indicates the build status of package.", "type": "object", @@ -56215,11 +58074,14 @@ }, "buildstatus": { "description": "BuildStatus is the package build status.", - "type": "string" + "type": "string", + "default": "pending" }, "lastUpdateTimestamp": { "description": "LastUpdateTimestamp will store the timestamp the package was last updated\nmetav1.Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON.\nhttps://github.com/kubernetes/apimachinery/blob/44bd77c24ef93cd3a5eb6fef64e514025d10d44e/pkg/apis/meta/v1/time.go#L26-L35", - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true } } } @@ -56444,17 +58306,12 @@ "name": "io.fission.v1.TimeTrigger", "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": "TimeTriggerSpec invokes the specific function at a time or\ntimes specified by a cron string.", "type": "object", + "description": "TimeTriggerSpec invokes the specific function at a time or\ntimes specified by a cron string.", "required": [ "cron", "functionref" @@ -56476,7 +58333,9 @@ "description": "Function Reference by weight. this map contains function name as key and its weight\nas the value. This is for canary upgrade purpose.", "additionalProperties": { "type": "integer" - } + }, + "type": "object", + "nullable": true }, "name": { "description": "Name of the function.", @@ -56489,6 +58348,17 @@ } } } + }, + "status": { + "type": "object" + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "TimeTrigger invokes functions based on given cron schedule.", @@ -56611,7 +58481,8 @@ "apiKind": "TimeTrigger", "apiVersion": "v1", "readProperties": { - "spec": "spec" + "spec": "spec", + "status": "status" }, "writeProperties": { "spec": "spec" @@ -56623,7 +58494,8 @@ "simpleExcludes": [], "gqlDefs": { "metadata": "metadata!", - "spec": "JSONObject" + "spec": "JSONObject", + "status": "JSONObject" }, "namespaced": true } diff --git a/data/fluxcd.json b/data/fluxcd.json index 5eeccf0..688e598 100644 --- a/data/fluxcd.json +++ b/data/fluxcd.json @@ -6,17 +6,12 @@ "name": "io.fluxcd.toolkit.kustomize.v1.Kustomization", "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": "KustomizationSpec defines the configuration to calculate the desired state from a Source using Kustomize.", "type": "object", + "description": "KustomizationSpec defines the configuration to calculate the desired state from a Source using Kustomize.", "required": [ "interval", "prune", @@ -102,7 +97,8 @@ }, "force": { "description": "Force instructs the controller to recreate resources when patching fails due to an immutable field change.", - "type": "boolean" + "type": "boolean", + "default": false }, "healthChecks": { "description": "A list of resources to be included in the health assessment.", @@ -287,7 +283,8 @@ }, "optional": { "description": "Optional indicates whether the referenced resource must exist, or whether to tolerate its absence. If true and the referenced resource is absent, proceed as if the resource was present but empty, without any variables defined.", - "type": "boolean" + "type": "boolean", + "default": false } } } @@ -360,8 +357,8 @@ } }, "status": { - "description": "KustomizationStatus defines the observed state of a kustomization.", "type": "object", + "description": "KustomizationStatus defines the observed state of a kustomization.", "properties": { "conditions": { "type": "array", @@ -465,7 +462,18 @@ "type": "integer", "format": "int64" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "Kustomization is the Schema for the kustomizations API.", @@ -2233,17 +2241,12 @@ "name": "io.fluxcd.toolkit.notification.v1.Receiver", "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": "ReceiverSpec defines the desired state of the Receiver.", "type": "object", + "description": "ReceiverSpec defines the desired state of the Receiver.", "required": [ "resources", "secretRef", @@ -2260,7 +2263,8 @@ "interval": { "description": "Interval at which to reconcile the Receiver with its Secret references.", "type": "string", - "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$" + "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$", + "default": "10m" }, "resources": { "description": "A list of resources to be notified about changes.", @@ -2352,8 +2356,8 @@ } }, "status": { - "description": "ReceiverStatus defines the observed state of the Receiver.", "type": "object", + "description": "ReceiverStatus defines the observed state of the Receiver.", "properties": { "conditions": { "description": "Conditions holds the conditions for the Receiver.", @@ -2423,7 +2427,18 @@ "description": "WebhookPath is the generated incoming webhook address in the format of '/hook/sha256sum(token+name+namespace)'.", "type": "string" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "Receiver is the Schema for the receivers API.", @@ -3200,17 +3215,12 @@ "name": "io.fluxcd.toolkit.notification.v1beta3.Alert", "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": "AlertSpec defines an alerting rule for events involving a list of objects.", "type": "object", + "description": "AlertSpec defines an alerting rule for events involving a list of objects.", "required": [ "eventSources", "providerRef" @@ -3229,7 +3239,8 @@ "enum": [ "info", "error" - ] + ], + "default": "info" }, "eventSources": { "description": "EventSources specifies how to filter events based on the involved object kind, name and namespace.", @@ -3321,6 +3332,14 @@ "type": "boolean" } } + }, + "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" } }, "description": "Alert is the Schema for the alerts API", @@ -3991,17 +4010,12 @@ "name": "io.fluxcd.toolkit.notification.v1beta3.Provider", "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": "ProviderSpec defines the desired state of the Provider.", "type": "object", + "description": "ProviderSpec defines the desired state of the Provider.", "required": [ "type" ], @@ -4101,6 +4115,14 @@ "maxLength": 2048 } } + }, + "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" } }, "description": "Provider is the Schema for the providers API", @@ -4736,17 +4758,12 @@ "name": "io.fluxcd.toolkit.source.v1.GitRepository", "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": "GitRepositorySpec specifies the required configuration to produce an Artifact for a Git repository.", "type": "object", + "description": "GitRepositorySpec specifies the required configuration to produce an Artifact for a Git repository.", "required": [ "interval", "url" @@ -4858,7 +4875,8 @@ "timeout": { "description": "Timeout for Git operations like cloning, defaults to 60s.", "type": "string", - "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m))+$" + "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m))+$", + "default": "60s" }, "url": { "description": "URL specifies the Git repository URL, it can be an HTTP/S or SSH address.", @@ -4880,7 +4898,8 @@ "HEAD", "Tag", "TagAndHEAD" - ] + ], + "default": "HEAD" }, "secretRef": { "description": "SecretRef specifies the Secret containing the public keys of trusted Git authors.", @@ -4900,8 +4919,8 @@ } }, "status": { - "description": "GitRepositoryStatus records the observed state of a Git repository.", "type": "object", + "description": "GitRepositoryStatus records the observed state of a Git repository.", "properties": { "artifact": { "description": "Artifact represents the last successful GitRepository reconciliation.", @@ -5109,7 +5128,18 @@ "description": "SourceVerificationMode is the last used verification mode indicating which Git object(s) have been verified.", "type": "string" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "GitRepository is the Schema for the gitrepositories API.", @@ -6438,17 +6468,12 @@ "name": "io.fluxcd.toolkit.source.v1beta2.Bucket", "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": "BucketSpec specifies the required configuration to produce an Artifact for an object storage bucket.", "type": "object", + "description": "BucketSpec specifies the required configuration to produce an Artifact for an object storage bucket.", "required": [ "bucketName", "endpoint", @@ -6514,7 +6539,8 @@ "aws", "gcp", "azure" - ] + ], + "default": "generic" }, "region": { "description": "Region of the Endpoint where the BucketName is located in.", @@ -6540,13 +6566,14 @@ "timeout": { "description": "Timeout for fetch operations, defaults to 60s.", "type": "string", - "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m))+$" + "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m))+$", + "default": "60s" } } }, "status": { - "description": "BucketStatus records the observed state of a Bucket.", "type": "object", + "description": "BucketStatus records the observed state of a Bucket.", "properties": { "artifact": { "description": "Artifact represents the last successful Bucket reconciliation.", @@ -6666,7 +6693,18 @@ "description": "URL is the dynamic fetch link for the latest Artifact. It is provided on a \"best effort\" basis, and using the precise BucketStatus.Artifact data is recommended.", "type": "string" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "Bucket is the Schema for the buckets API.", @@ -7285,17 +7323,12 @@ "name": "io.fluxcd.toolkit.source.v1beta2.HelmChart", "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": "HelmChartSpec specifies the desired state of a Helm chart.", "type": "object", + "description": "HelmChartSpec specifies the desired state of a Helm chart.", "required": [ "chart", "interval", @@ -7343,7 +7376,8 @@ "enum": [ "ChartVersion", "Revision" - ] + ], + "default": "ChartVersion" }, "sourceRef": { "description": "SourceRef is the reference to the Source the chart is available at.", @@ -7421,7 +7455,8 @@ "type": "string", "enum": [ "cosign" - ] + ], + "default": "cosign" }, "secretRef": { "description": "SecretRef specifies the Kubernetes Secret containing the trusted public keys.", @@ -7440,13 +7475,14 @@ }, "version": { "description": "Version is the chart version semver expression, ignored for charts from GitRepository and Bucket sources. Defaults to latest when omitted.", - "type": "string" + "type": "string", + "default": "*" } } }, "status": { - "description": "HelmChartStatus records the observed state of the HelmChart.", "type": "object", + "description": "HelmChartStatus records the observed state of the HelmChart.", "properties": { "artifact": { "description": "Artifact represents the output of the last successful reconciliation.", @@ -7570,7 +7606,18 @@ "description": "URL is the dynamic fetch link for the latest Artifact. It is provided on a \"best effort\" basis, and using the precise BucketStatus.Artifact data is recommended.", "type": "string" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "HelmChart is the Schema for the helmcharts API.", @@ -8306,17 +8353,12 @@ "name": "io.fluxcd.toolkit.source.v1beta2.HelmRepository", "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": "HelmRepositorySpec specifies the required configuration to produce an Artifact for a Helm repository index YAML.", "type": "object", + "description": "HelmRepositorySpec specifies the required configuration to produce an Artifact for a Helm repository index YAML.", "required": [ "url" ], @@ -8381,7 +8423,8 @@ "aws", "azure", "gcp" - ] + ], + "default": "generic" }, "secretRef": { "description": "SecretRef specifies the Secret containing authentication credentials for the HelmRepository. For HTTP/S basic auth the secret must contain 'username' and 'password' fields. Support for TLS auth using the 'certFile' and 'keyFile', and/or 'caFile' keys is deprecated. Please use `.spec.certSecretRef` instead.", @@ -8421,8 +8464,8 @@ } }, "status": { - "description": "HelmRepositoryStatus records the observed state of the HelmRepository.", "type": "object", + "description": "HelmRepositoryStatus records the observed state of the HelmRepository.", "properties": { "artifact": { "description": "Artifact represents the last successful HelmRepository reconciliation.", @@ -8538,7 +8581,18 @@ "description": "URL is the dynamic fetch link for the latest Artifact. It is provided on a \"best effort\" basis, and using the precise HelmRepositoryStatus.Artifact data is recommended.", "type": "string" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "HelmRepository is the Schema for the helmrepositories API.", @@ -9143,17 +9197,12 @@ "name": "io.fluxcd.toolkit.source.v1beta2.OCIRepository", "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": "OCIRepositorySpec defines the desired state of OCIRepository", "type": "object", + "description": "OCIRepositorySpec defines the desired state of OCIRepository", "required": [ "interval", "url" @@ -9211,7 +9260,8 @@ "aws", "azure", "gcp" - ] + ], + "default": "generic" }, "ref": { "description": "The OCI reference to pull and monitor for changes, defaults to the latest tag.", @@ -9255,7 +9305,8 @@ "timeout": { "description": "The timeout for remote OCI Repository operations like pulling, defaults to 60s.", "type": "string", - "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m))+$" + "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m))+$", + "default": "60s" }, "url": { "description": "URL is a reference to an OCI artifact repository hosted on a remote container registry.", @@ -9296,7 +9347,8 @@ "type": "string", "enum": [ "cosign" - ] + ], + "default": "cosign" }, "secretRef": { "description": "SecretRef specifies the Kubernetes Secret containing the trusted public keys.", @@ -9316,8 +9368,8 @@ } }, "status": { - "description": "OCIRepositoryStatus defines the observed state of OCIRepository", "type": "object", + "description": "OCIRepositoryStatus defines the observed state of OCIRepository", "properties": { "artifact": { "description": "Artifact represents the output of the last successful OCI Repository sync.", @@ -9459,7 +9511,18 @@ "description": "URL is the download link for the artifact output of the last OCI Repository sync.", "type": "string" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "OCIRepository is the Schema for the ocirepositories API", @@ -9923,17 +9986,12 @@ "name": "io.fluxcd.toolkit.image.v1beta1.ImageUpdateAutomation", "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": "ImageUpdateAutomationSpec defines the desired state of ImageUpdateAutomation", "type": "object", + "description": "ImageUpdateAutomationSpec defines the desired state of ImageUpdateAutomation", "required": [ "interval", "sourceRef" @@ -10075,7 +10133,8 @@ "type": "string", "enum": [ "GitRepository" - ] + ], + "default": "GitRepository" }, "name": { "description": "Name of the referent.", @@ -10107,15 +10166,19 @@ "type": "string", "enum": [ "Setters" - ] + ], + "default": "Setters" } + }, + "default": { + "strategy": "Setters" } } } }, "status": { - "description": "ImageUpdateAutomationStatus defines the observed state of ImageUpdateAutomation", "type": "object", + "description": "ImageUpdateAutomationStatus defines the observed state of ImageUpdateAutomation", "properties": { "conditions": { "type": "array", @@ -10193,7 +10256,18 @@ "type": "integer", "format": "int64" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "ImageUpdateAutomation is the Schema for the imageupdateautomations API", @@ -10577,17 +10651,12 @@ "name": "io.fluxcd.toolkit.image.v1beta2.ImagePolicy", "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": "ImagePolicySpec defines the parameters for calculating the ImagePolicy.", "type": "object", + "description": "ImagePolicySpec defines the parameters for calculating the ImagePolicy.", "required": [ "imageRepositoryRef", "policy" @@ -10638,7 +10707,8 @@ "enum": [ "asc", "desc" - ] + ], + "default": "asc" } } }, @@ -10652,7 +10722,8 @@ "enum": [ "asc", "desc" - ] + ], + "default": "asc" } } }, @@ -10674,8 +10745,8 @@ } }, "status": { - "description": "ImagePolicyStatus defines the observed state of ImagePolicy", "type": "object", + "description": "ImagePolicyStatus defines the observed state of ImagePolicy", "properties": { "conditions": { "type": "array", @@ -10743,7 +10814,18 @@ "description": "ObservedPreviousImage is the observed previous LatestImage. It is used to keep track of the previous and current images.", "type": "string" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "ImagePolicy is the Schema for the imagepolicies API", @@ -11215,17 +11297,12 @@ "name": "io.fluxcd.toolkit.image.v1beta2.ImageRepository", "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": "ImageRepositorySpec defines the parameters for scanning an image repository, e.g., `fluxcd/flux`.", "type": "object", + "description": "ImageRepositorySpec defines the parameters for scanning an image repository, e.g., `fluxcd/flux`.", "properties": { "accessFrom": { "description": "AccessFrom defines an ACL for allowing cross-namespace references to the ImageRepository object based on the caller's namespace labels.", @@ -11272,7 +11349,10 @@ "maxItems": 25, "items": { "type": "string" - } + }, + "default": [ + "^.*\\.sig$" + ] }, "image": { "description": "Image is the name of the image repository", @@ -11295,7 +11375,8 @@ "aws", "azure", "gcp" - ] + ], + "default": "generic" }, "secretRef": { "description": "SecretRef can be given the name of a secret containing credentials to use for the image registry. The secret should be created with `kubectl create secret docker-registry`, or the equivalent.", @@ -11327,8 +11408,8 @@ } }, "status": { - "description": "ImageRepositoryStatus defines the observed state of ImageRepository", "type": "object", + "description": "ImageRepositoryStatus defines the observed state of ImageRepository", "properties": { "canonicalImageName": { "description": "CanonicalName is the name of the image repository with all the implied bits made explicit; e.g., `docker.io/library/alpine` rather than `alpine`.", @@ -11426,7 +11507,18 @@ "type": "integer", "format": "int64" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "ImageRepository is the Schema for the imagerepositories API", @@ -11979,17 +12071,12 @@ "name": "io.fluxcd.toolkit.helm.v2beta2.HelmRelease", "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": "HelmReleaseSpec defines the desired state of a Helm release.", "type": "object", + "description": "HelmReleaseSpec defines the desired state of a Helm release.", "required": [ "chart", "interval" @@ -12047,7 +12134,8 @@ "enum": [ "ChartVersion", "Revision" - ] + ], + "default": "ChartVersion" }, "sourceRef": { "description": "The name and namespace of the v1.Source the chart is available at.", @@ -12106,7 +12194,8 @@ "type": "string", "enum": [ "cosign" - ] + ], + "default": "cosign" }, "secretRef": { "description": "SecretRef specifies the Kubernetes Secret containing the trusted public keys.", @@ -12125,7 +12214,8 @@ }, "version": { "description": "Version semver expression, ignored for charts from v1beta2.GitRepository and v1beta2.Bucket sources. Defaults to latest when omitted.", - "type": "string" + "type": "string", + "default": "*" } } } @@ -12636,7 +12726,8 @@ "background", "foreground", "orphan" - ] + ], + "default": "background" }, "disableHooks": { "description": "DisableHooks prevents hooks from running during the Helm rollback action.", @@ -12782,8 +12873,8 @@ } }, "status": { - "description": "HelmReleaseStatus defines the observed state of a HelmRelease.", "type": "object", + "description": "HelmReleaseStatus defines the observed state of a HelmRelease.", "properties": { "conditions": { "description": "Conditions holds the conditions for the HelmRelease.", @@ -13012,7 +13103,18 @@ "type": "integer", "format": "int64" } + }, + "default": { + "observedGeneration": -1 } + }, + "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" } }, "description": "HelmRelease is the Schema for the helmreleases API", diff --git a/data/k8s.json b/data/k8s.json index 2b8f048..f304d9a 100644 --- a/data/k8s.json +++ b/data/k8s.json @@ -77006,17 +77006,12 @@ "name": "io.k8s.networking.gateway.v1.GRPCRoute", "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": "Spec defines the desired state of GRPCRoute.", "type": "object", + "description": "Spec defines the desired state of GRPCRoute.", "properties": { "hostnames": { "description": "Hostnames defines a set of hostnames to match against the GRPC\nHost header to select a GRPCRoute to process the request. This matches\nthe RFC 1123 definition of a hostname with 2 notable exceptions:\n\n\n1. IPs are not allowed.\n2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard\n label MUST appear by itself as the first label.\n\n\nIf a hostname is specified by both the Listener and GRPCRoute, there\nMUST be at least one intersecting hostname for the GRPCRoute to be\nattached to the Listener. For example:\n\n\n* A Listener with `test.example.com` as the hostname matches GRPCRoutes\n that have either not specified any hostnames, or have specified at\n least one of `test.example.com` or `*.example.com`.\n* A Listener with `*.example.com` as the hostname matches GRPCRoutes\n that have either not specified any hostnames or have specified at least\n one hostname that matches the Listener hostname. For example,\n `test.example.com` and `*.example.com` would both match. On the other\n hand, `example.com` and `test.example.net` would not match.\n\n\nHostnames that are prefixed with a wildcard label (`*.`) are interpreted\nas a suffix match. That means that a match for `*.example.com` would match\nboth `test.example.com`, and `foo.test.example.com`, but not `example.com`.\n\n\nIf both the Listener and GRPCRoute have specified hostnames, any\nGRPCRoute hostnames that do not match the Listener hostname MUST be\nignored. For example, if a Listener specified `*.example.com`, and the\nGRPCRoute specified `test.example.com` and `test.example.net`,\n`test.example.net` MUST NOT be considered for a match.\n\n\nIf both the Listener and GRPCRoute have specified hostnames, and none\nmatch with the criteria above, then the GRPCRoute MUST NOT be accepted by\nthe implementation. The implementation MUST raise an 'Accepted' Condition\nwith a status of `False` in the corresponding RouteParentStatus.\n\n\nIf a Route (A) of type HTTPRoute or GRPCRoute is attached to a\nListener and that listener already has another Route (B) of the other\ntype attached and the intersection of the hostnames of A and B is\nnon-empty, then the implementation MUST accept exactly one of these two\nroutes, determined by the following criteria, in order:\n\n\n* The oldest Route based on creation timestamp.\n* The Route appearing first in alphabetical order by\n \"{namespace}/{name}\".\n\n\nThe rejected Route MUST raise an 'Accepted' condition with a status of\n'False' in the corresponding RouteParentStatus.\n\n\nSupport: Core", @@ -77045,14 +77040,16 @@ "description": "Group is the group of the referent.\nWhen unspecified, \"gateway.networking.k8s.io\" is inferred.\nTo set the core API group (such as for a \"Service\" kind referent),\nGroup must be explicitly set to \"\" (empty string).\n\n\nSupport: Core", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is kind of the referent.\n\n\nThere are two kinds of parent resources with \"Core\" support:\n\n\n* Gateway (Gateway conformance profile)\n* Service (Mesh conformance profile, ClusterIP Services only)\n\n\nSupport for other resources is Implementation-Specific.", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Gateway" }, "name": { "description": "Name is the name of the referent.\n\n\nSupport: Core", @@ -77085,12 +77082,12 @@ }, "x-kubernetes-validations": [ { - "message": "sectionName must be specified when parentRefs includes 2 or more references to the same parent", - "rule": "self.all(p1, self.all(p2, p1.group == p2.group && p1.kind == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && p1.__namespace__ == p2.__namespace__ )) ? ((!has(p1.sectionName) || p1.sectionName == '') == (!has(p2.sectionName) || p2.sectionName == '')) : true))" + "rule": "self.all(p1, self.all(p2, p1.group == p2.group && p1.kind == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && p1.__namespace__ == p2.__namespace__ )) ? ((!has(p1.sectionName) || p1.sectionName == '') == (!has(p2.sectionName) || p2.sectionName == '')) : true))", + "message": "sectionName must be specified when parentRefs includes 2 or more references to the same parent" }, { - "message": "sectionName must be unique when parentRefs includes 2 or more references to the same parent", - "rule": "self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName == '')) || (has(p1.sectionName) && has(p2.sectionName) && p1.sectionName == p2.sectionName))))" + "rule": "self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName == '')) || (has(p1.sectionName) && has(p2.sectionName) && p1.sectionName == p2.sectionName))))", + "message": "sectionName must be unique when parentRefs includes 2 or more references to the same parent" } ] }, @@ -77251,14 +77248,16 @@ "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".\nWhen unspecified or empty string, core API group is inferred.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "" }, "kind": { "description": "Kind is the Kubernetes resource kind of the referent. For example\n\"Service\".\n\n\nDefaults to \"Service\" when not specified.\n\n\nExternalName services can refer to CNAME DNS records that may live\noutside of the cluster and as such are difficult to reason about in\nterms of conformance. They also may not be safe to forward to (see\nCVE-2021-25740 for more information). Implementations SHOULD NOT\nsupport ExternalName Services.\n\n\nSupport: Core (Services with a type other than ExternalName)\n\n\nSupport: Implementation-specific (Services with type ExternalName)", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Service" }, "name": { "description": "Name is the name of the referent.", @@ -77283,8 +77282,8 @@ }, "x-kubernetes-validations": [ { - "message": "Must have port for Service reference", - "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true" + "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true", + "message": "Must have port for Service reference" } ] } @@ -77382,47 +77381,47 @@ }, "x-kubernetes-validations": [ { - "message": "filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier", - "rule": "!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')" + "rule": "!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')", + "message": "filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier" }, { - "message": "filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type", - "rule": "!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')" + "rule": "!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')", + "message": "filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type" }, { - "message": "filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier", - "rule": "!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')" + "rule": "!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')", + "message": "filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier" }, { - "message": "filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type", - "rule": "!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')" + "rule": "!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')", + "message": "filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type" }, { - "message": "filter.requestMirror must be nil if the filter.type is not RequestMirror", - "rule": "!(has(self.requestMirror) && self.type != 'RequestMirror')" + "rule": "!(has(self.requestMirror) && self.type != 'RequestMirror')", + "message": "filter.requestMirror must be nil if the filter.type is not RequestMirror" }, { - "message": "filter.requestMirror must be specified for RequestMirror filter.type", - "rule": "!(!has(self.requestMirror) && self.type == 'RequestMirror')" + "rule": "!(!has(self.requestMirror) && self.type == 'RequestMirror')", + "message": "filter.requestMirror must be specified for RequestMirror filter.type" }, { - "message": "filter.extensionRef must be nil if the filter.type is not ExtensionRef", - "rule": "!(has(self.extensionRef) && self.type != 'ExtensionRef')" + "rule": "!(has(self.extensionRef) && self.type != 'ExtensionRef')", + "message": "filter.extensionRef must be nil if the filter.type is not ExtensionRef" }, { - "message": "filter.extensionRef must be specified for ExtensionRef filter.type", - "rule": "!(!has(self.extensionRef) && self.type == 'ExtensionRef')" + "rule": "!(!has(self.extensionRef) && self.type == 'ExtensionRef')", + "message": "filter.extensionRef must be specified for ExtensionRef filter.type" } ] }, "x-kubernetes-validations": [ { - "message": "RequestHeaderModifier filter cannot be repeated", - "rule": "self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1" + "rule": "self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1", + "message": "RequestHeaderModifier filter cannot be repeated" }, { - "message": "ResponseHeaderModifier filter cannot be repeated", - "rule": "self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1" + "rule": "self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1", + "message": "ResponseHeaderModifier filter cannot be repeated" } ] }, @@ -77430,14 +77429,16 @@ "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".\nWhen unspecified or empty string, core API group is inferred.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "" }, "kind": { "description": "Kind is the Kubernetes resource kind of the referent. For example\n\"Service\".\n\n\nDefaults to \"Service\" when not specified.\n\n\nExternalName services can refer to CNAME DNS records that may live\noutside of the cluster and as such are difficult to reason about in\nterms of conformance. They also may not be safe to forward to (see\nCVE-2021-25740 for more information). Implementations SHOULD NOT\nsupport ExternalName Services.\n\n\nSupport: Core (Services with a type other than ExternalName)\n\n\nSupport: Implementation-specific (Services with type ExternalName)", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Service" }, "name": { "description": "Name is the name of the referent.", @@ -77464,13 +77465,14 @@ "type": "integer", "format": "int32", "maximum": 1000000, - "minimum": 0 + "minimum": 0, + "default": 1 } }, "x-kubernetes-validations": [ { - "message": "Must have port for Service reference", - "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true" + "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true", + "message": "Must have port for Service reference" } ] } @@ -77613,14 +77615,16 @@ "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".\nWhen unspecified or empty string, core API group is inferred.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "" }, "kind": { "description": "Kind is the Kubernetes resource kind of the referent. For example\n\"Service\".\n\n\nDefaults to \"Service\" when not specified.\n\n\nExternalName services can refer to CNAME DNS records that may live\noutside of the cluster and as such are difficult to reason about in\nterms of conformance. They also may not be safe to forward to (see\nCVE-2021-25740 for more information). Implementations SHOULD NOT\nsupport ExternalName Services.\n\n\nSupport: Core (Services with a type other than ExternalName)\n\n\nSupport: Implementation-specific (Services with type ExternalName)", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Service" }, "name": { "description": "Name is the name of the referent.", @@ -77645,8 +77649,8 @@ }, "x-kubernetes-validations": [ { - "message": "Must have port for Service reference", - "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true" + "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true", + "message": "Must have port for Service reference" } ] } @@ -77744,47 +77748,47 @@ }, "x-kubernetes-validations": [ { - "message": "filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier", - "rule": "!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')" + "rule": "!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')", + "message": "filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier" }, { - "message": "filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type", - "rule": "!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')" + "rule": "!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')", + "message": "filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type" }, { - "message": "filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier", - "rule": "!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')" + "rule": "!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')", + "message": "filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier" }, { - "message": "filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type", - "rule": "!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')" + "rule": "!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')", + "message": "filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type" }, { - "message": "filter.requestMirror must be nil if the filter.type is not RequestMirror", - "rule": "!(has(self.requestMirror) && self.type != 'RequestMirror')" + "rule": "!(has(self.requestMirror) && self.type != 'RequestMirror')", + "message": "filter.requestMirror must be nil if the filter.type is not RequestMirror" }, { - "message": "filter.requestMirror must be specified for RequestMirror filter.type", - "rule": "!(!has(self.requestMirror) && self.type == 'RequestMirror')" + "rule": "!(!has(self.requestMirror) && self.type == 'RequestMirror')", + "message": "filter.requestMirror must be specified for RequestMirror filter.type" }, { - "message": "filter.extensionRef must be nil if the filter.type is not ExtensionRef", - "rule": "!(has(self.extensionRef) && self.type != 'ExtensionRef')" + "rule": "!(has(self.extensionRef) && self.type != 'ExtensionRef')", + "message": "filter.extensionRef must be nil if the filter.type is not ExtensionRef" }, { - "message": "filter.extensionRef must be specified for ExtensionRef filter.type", - "rule": "!(!has(self.extensionRef) && self.type == 'ExtensionRef')" + "rule": "!(!has(self.extensionRef) && self.type == 'ExtensionRef')", + "message": "filter.extensionRef must be specified for ExtensionRef filter.type" } ] }, "x-kubernetes-validations": [ { - "message": "RequestHeaderModifier filter cannot be repeated", - "rule": "self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1" + "rule": "self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1", + "message": "RequestHeaderModifier filter cannot be repeated" }, { - "message": "ResponseHeaderModifier filter cannot be repeated", - "rule": "self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1" + "rule": "self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1", + "message": "ResponseHeaderModifier filter cannot be repeated" } ] }, @@ -77821,7 +77825,8 @@ "enum": [ "Exact", "RegularExpression" - ] + ], + "default": "Exact" }, "value": { "description": "Value is the value of the gRPC Header to be matched.", @@ -77856,21 +77861,22 @@ "enum": [ "Exact", "RegularExpression" - ] + ], + "default": "Exact" } }, "x-kubernetes-validations": [ { - "message": "One or both of 'service' or 'method' must be specified", - "rule": "has(self.type) ? has(self.service) || has(self.method) : true" + "rule": "has(self.type) ? has(self.service) || has(self.method) : true", + "message": "One or both of 'service' or 'method' must be specified" }, { - "message": "service must only contain valid characters (matching ^(?i)\\.?[a-z_][a-z_0-9]*(\\.[a-z_][a-z_0-9]*)*$)", - "rule": "(!has(self.type) || self.type == 'Exact') && has(self.service) ? self.service.matches(r\"\"\"^(?i)\\.?[a-z_][a-z_0-9]*(\\.[a-z_][a-z_0-9]*)*$\"\"\"): true" + "rule": "(!has(self.type) || self.type == 'Exact') && has(self.service) ? self.service.matches(r\"\"\"^(?i)\\.?[a-z_][a-z_0-9]*(\\.[a-z_][a-z_0-9]*)*$\"\"\"): true", + "message": "service must only contain valid characters (matching ^(?i)\\.?[a-z_][a-z_0-9]*(\\.[a-z_][a-z_0-9]*)*$)" }, { - "message": "method must only contain valid characters (matching ^[A-Za-z_][A-Za-z_0-9]*$)", - "rule": "(!has(self.type) || self.type == 'Exact') && has(self.method) ? self.method.matches(r\"\"\"^[A-Za-z_][A-Za-z_0-9]*$\"\"\"): true" + "rule": "(!has(self.type) || self.type == 'Exact') && has(self.method) ? self.method.matches(r\"\"\"^[A-Za-z_][A-Za-z_0-9]*$\"\"\"): true", + "message": "method must only contain valid characters (matching ^[A-Za-z_][A-Za-z_0-9]*$)" } ] } @@ -77883,8 +77889,8 @@ } }, "status": { - "description": "Status defines the current state of GRPCRoute.", "type": "object", + "description": "Status defines the current state of GRPCRoute.", "required": [ "parents" ], @@ -77980,14 +77986,16 @@ "description": "Group is the group of the referent.\nWhen unspecified, \"gateway.networking.k8s.io\" is inferred.\nTo set the core API group (such as for a \"Service\" kind referent),\nGroup must be explicitly set to \"\" (empty string).\n\n\nSupport: Core", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is kind of the referent.\n\n\nThere are two kinds of parent resources with \"Core\" support:\n\n\n* Gateway (Gateway conformance profile)\n* Service (Mesh conformance profile, ClusterIP Services only)\n\n\nSupport for other resources is Implementation-Specific.", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Gateway" }, "name": { "description": "Name is the name of the referent.\n\n\nSupport: Core", @@ -78022,6 +78030,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "GRPCRoute provides a way to route gRPC requests. This includes the capability\nto match requests by hostname, gRPC service, gRPC method, or HTTP/2 header.\nFilters can be used to specify additional processing steps. Backends specify\nwhere matching requests will be routed.\n\n\nGRPCRoute falls under extended support within the Gateway API. Within the\nfollowing specification, the word \"MUST\" indicates that an implementation\nsupporting GRPCRoute must conform to the indicated requirement, but an\nimplementation not supporting this route type need not follow the requirement\nunless explicitly indicated.\n\n\nImplementations supporting `GRPCRoute` with the `HTTPS` `ProtocolType` MUST\naccept HTTP/2 connections without an initial upgrade from HTTP/1.1, i.e. via\nALPN. If the implementation does not support this, then it MUST set the\n\"Accepted\" condition to \"False\" for the affected listener with a reason of\n\"UnsupportedProtocol\". Implementations MAY also accept HTTP/2 connections\nwith an upgrade from HTTP/1.\n\n\nImplementations supporting `GRPCRoute` with the `HTTP` `ProtocolType` MUST\nsupport HTTP/2 over cleartext TCP (h2c,\nhttps://www.rfc-editor.org/rfc/rfc7540#section-3.1) without an initial\nupgrade from HTTP/1.1, i.e. with prior knowledge\n(https://www.rfc-editor.org/rfc/rfc7540#section-3.4). If the implementation\ndoes not support this, then it MUST set the \"Accepted\" condition to \"False\"\nfor the affected listener with a reason of \"UnsupportedProtocol\".\nImplementations MAY also accept HTTP/2 connections with an upgrade from\nHTTP/1, i.e. without prior knowledge.", @@ -80219,17 +80235,12 @@ "name": "io.k8s.networking.gateway.v1.Gateway", "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": "Spec defines the desired state of Gateway.", "type": "object", + "description": "Spec defines the desired state of Gateway.", "required": [ "gatewayClassName", "listeners" @@ -80251,7 +80262,8 @@ "type": "string", "maxLength": 253, "minLength": 1, - "pattern": "^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\\/[A-Za-z0-9\\/\\-._~%!$&'()*+,;=:]+$" + "pattern": "^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\\/[A-Za-z0-9\\/\\-._~%!$&'()*+,;=:]+$", + "default": "IPAddress" }, "value": { "description": "Value of the address. The validity of the values will depend\non the type and support by the controller.\n\n\nExamples: `1.2.3.4`, `128::1`, `my-ip-address`.", @@ -80262,19 +80274,51 @@ }, "x-kubernetes-validations": [ { - "message": "Hostname value must only contain valid characters (matching ^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)", - "rule": "self.type == 'Hostname' ? self.value.matches(r\"\"\"^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\"\"\"): true" + "rule": "self.type == 'Hostname' ? self.value.matches(r\"\"\"^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\"\"\"): true", + "message": "Hostname value must only contain valid characters (matching ^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)" + } + ], + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "IPAddress" + ] + }, + "value": { + "anyOf": [ + { + "format": "ipv4" + }, + { + "format": "ipv6" + } + ] + } + } + }, + { + "properties": { + "type": { + "not": { + "enum": [ + "IPAddress" + ] + } + } + } } ] }, "x-kubernetes-validations": [ { - "message": "IPAddress values must be unique", - "rule": "self.all(a1, a1.type == 'IPAddress' ? self.exists_one(a2, a2.type == a1.type && a2.value == a1.value) : true )" + "rule": "self.all(a1, a1.type == 'IPAddress' ? self.exists_one(a2, a2.type == a1.type && a2.value == a1.value) : true )", + "message": "IPAddress values must be unique" }, { - "message": "Hostname values must be unique", - "rule": "self.all(a1, a1.type == 'Hostname' ? self.exists_one(a2, a2.type == a1.type && a2.value == a1.value) : true )" + "rule": "self.all(a1, a1.type == 'Hostname' ? self.exists_one(a2, a2.type == a1.type && a2.value == a1.value) : true )", + "message": "Hostname values must be unique" } ] }, @@ -80317,7 +80361,8 @@ "description": "Group is the group of the Route.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is the kind of the Route.", @@ -80340,7 +80385,8 @@ "All", "Selector", "Same" - ] + ], + "default": "Same" }, "selector": { "description": "Selector must be specified when From is set to \"Selector\". In that case,\nonly Routes in Namespaces matching this Selector will be selected by this\nGateway. This field is ignored for other values of \"From\".\n\n\nSupport: Core", @@ -80387,8 +80433,16 @@ }, "x-kubernetes-map-type": "atomic" } + }, + "default": { + "from": "Same" } } + }, + "default": { + "namespaces": { + "from": "Same" + } } }, "hostname": { @@ -80438,14 +80492,16 @@ "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".\nWhen unspecified or empty string, core API group is inferred.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "" }, "kind": { "description": "Kind is kind of the referent. For example \"Secret\".", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Secret" }, "name": { "description": "Name is the name of the referent.", @@ -80469,7 +80525,8 @@ "enum": [ "Terminate", "Passthrough" - ] + ], + "default": "Terminate" }, "options": { "description": "Options are a list of key/value pairs to enable extended TLS\nconfiguration for each implementation. For example, configuring the\nminimum TLS version or supported cipher suites.\n\n\nA set of common keys MAY be defined by the API in the future. To avoid\nany ambiguity, implementation-specific definitions MUST use\ndomain-prefixed names, such as `example.com/my-custom-option`.\nUn-prefixed names are reserved for key names defined by Gateway API.\n\n\nSupport: Implementation-specific", @@ -80485,8 +80542,8 @@ }, "x-kubernetes-validations": [ { - "message": "certificateRefs or options must be specified when mode is Terminate", - "rule": "self.mode == 'Terminate' ? size(self.certificateRefs) > 0 || size(self.options) > 0 : true" + "rule": "self.mode == 'Terminate' ? size(self.certificateRefs) > 0 || size(self.options) > 0 : true", + "message": "certificateRefs or options must be specified when mode is Terminate" } ] } @@ -80498,32 +80555,32 @@ "x-kubernetes-list-type": "map", "x-kubernetes-validations": [ { - "message": "tls must not be specified for protocols ['HTTP', 'TCP', 'UDP']", - "rule": "self.all(l, l.protocol in ['HTTP', 'TCP', 'UDP'] ? !has(l.tls) : true)" + "rule": "self.all(l, l.protocol in ['HTTP', 'TCP', 'UDP'] ? !has(l.tls) : true)", + "message": "tls must not be specified for protocols ['HTTP', 'TCP', 'UDP']" }, { - "message": "tls mode must be Terminate for protocol HTTPS", - "rule": "self.all(l, (l.protocol == 'HTTPS' && has(l.tls)) ? (l.tls.mode == '' || l.tls.mode == 'Terminate') : true)" + "rule": "self.all(l, (l.protocol == 'HTTPS' && has(l.tls)) ? (l.tls.mode == '' || l.tls.mode == 'Terminate') : true)", + "message": "tls mode must be Terminate for protocol HTTPS" }, { - "message": "hostname must not be specified for protocols ['TCP', 'UDP']", - "rule": "self.all(l, l.protocol in ['TCP', 'UDP'] ? (!has(l.hostname) || l.hostname == '') : true)" + "rule": "self.all(l, l.protocol in ['TCP', 'UDP'] ? (!has(l.hostname) || l.hostname == '') : true)", + "message": "hostname must not be specified for protocols ['TCP', 'UDP']" }, { - "message": "Listener name must be unique within the Gateway", - "rule": "self.all(l1, self.exists_one(l2, l1.name == l2.name))" + "rule": "self.all(l1, self.exists_one(l2, l1.name == l2.name))", + "message": "Listener name must be unique within the Gateway" }, { - "message": "Combination of port, protocol and hostname must be unique for each listener", - "rule": "self.all(l1, self.exists_one(l2, l1.port == l2.port && l1.protocol == l2.protocol && (has(l1.hostname) && has(l2.hostname) ? l1.hostname == l2.hostname : !has(l1.hostname) && !has(l2.hostname))))" + "rule": "self.all(l1, self.exists_one(l2, l1.port == l2.port && l1.protocol == l2.protocol && (has(l1.hostname) && has(l2.hostname) ? l1.hostname == l2.hostname : !has(l1.hostname) && !has(l2.hostname))))", + "message": "Combination of port, protocol and hostname must be unique for each listener" } ] } } }, "status": { - "description": "Status defines the current state of Gateway.", "type": "object", + "description": "Status defines the current state of Gateway.", "properties": { "addresses": { "description": "Addresses lists the network addresses that have been bound to the\nGateway.\n\n\nThis list may differ from the addresses provided in the spec under some\nconditions:\n\n\n * no addresses are specified, all addresses are dynamically assigned\n * a combination of specified and dynamic addresses are assigned\n * a specified address was unusable (e.g. already in use)\n\n\n", @@ -80541,7 +80598,8 @@ "type": "string", "maxLength": 253, "minLength": 1, - "pattern": "^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\\/[A-Za-z0-9\\/\\-._~%!$&'()*+,;=:]+$" + "pattern": "^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\\/[A-Za-z0-9\\/\\-._~%!$&'()*+,;=:]+$", + "default": "IPAddress" }, "value": { "description": "Value of the address. The validity of the values will depend\non the type and support by the controller.\n\n\nExamples: `1.2.3.4`, `128::1`, `my-ip-address`.", @@ -80552,8 +80610,40 @@ }, "x-kubernetes-validations": [ { - "message": "Hostname value must only contain valid characters (matching ^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)", - "rule": "self.type == 'Hostname' ? self.value.matches(r\"\"\"^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\"\"\"): true" + "rule": "self.type == 'Hostname' ? self.value.matches(r\"\"\"^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$\"\"\"): true", + "message": "Hostname value must only contain valid characters (matching ^(\\*\\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)" + } + ], + "oneOf": [ + { + "properties": { + "type": { + "enum": [ + "IPAddress" + ] + }, + "value": { + "anyOf": [ + { + "format": "ipv4" + }, + { + "format": "ipv6" + } + ] + } + } + }, + { + "properties": { + "type": { + "not": { + "enum": [ + "IPAddress" + ] + } + } + } } ] } @@ -80616,7 +80706,23 @@ "x-kubernetes-list-map-keys": [ "type" ], - "x-kubernetes-list-type": "map" + "x-kubernetes-list-type": "map", + "default": [ + { + "lastTransitionTime": "1970-01-01T00:00:00Z", + "message": "Waiting for controller", + "reason": "Pending", + "status": "Unknown", + "type": "Accepted" + }, + { + "lastTransitionTime": "1970-01-01T00:00:00Z", + "message": "Waiting for controller", + "reason": "Pending", + "status": "Unknown", + "type": "Programmed" + } + ] }, "listeners": { "description": "Listeners provide status for each unique listener port defined in the Spec.", @@ -80719,7 +80825,8 @@ "description": "Group is the group of the Route.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is the kind of the Route.", @@ -80738,7 +80845,33 @@ ], "x-kubernetes-list-type": "map" } + }, + "default": { + "conditions": [ + { + "lastTransitionTime": "1970-01-01T00:00:00Z", + "message": "Waiting for controller", + "reason": "Pending", + "status": "Unknown", + "type": "Accepted" + }, + { + "lastTransitionTime": "1970-01-01T00:00:00Z", + "message": "Waiting for controller", + "reason": "Pending", + "status": "Unknown", + "type": "Programmed" + } + ] } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Gateway represents an instance of a service-traffic handling infrastructure\nby binding Listeners to a set of IP addresses.", @@ -82204,17 +82337,12 @@ "name": "io.k8s.networking.gateway.v1.GatewayClass", "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": "Spec defines the desired state of GatewayClass.", "type": "object", + "description": "Spec defines the desired state of GatewayClass.", "required": [ "controllerName" ], @@ -82227,8 +82355,8 @@ "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\\/[A-Za-z0-9\\/\\-._~%!$&'()*+,;=:]+$", "x-kubernetes-validations": [ { - "message": "Value is immutable", - "rule": "self == oldSelf" + "rule": "self == oldSelf", + "message": "Value is immutable" } ] }, @@ -82277,8 +82405,8 @@ } }, "status": { - "description": "Status defines the current state of GatewayClass.\n\n\nImplementations MUST populate status on all GatewayClass resources which\nspecify their controller name.", "type": "object", + "description": "Status defines the current state of GatewayClass.\n\n\nImplementations MUST populate status on all GatewayClass resources which\nspecify their controller name.", "properties": { "conditions": { "description": "Conditions is the current status from the controller for\nthis GatewayClass.\n\n\nControllers should prefer to publish conditions using values\nof GatewayClassConditionType for the type of each Condition.", @@ -82338,9 +82466,37 @@ "x-kubernetes-list-map-keys": [ "type" ], - "x-kubernetes-list-type": "map" + "x-kubernetes-list-type": "map", + "default": [ + { + "lastTransitionTime": "1970-01-01T00:00:00Z", + "message": "Waiting for controller", + "reason": "Pending", + "status": "Unknown", + "type": "Accepted" + } + ] } + }, + "default": { + "conditions": [ + { + "lastTransitionTime": "1970-01-01T00:00:00Z", + "message": "Waiting for controller", + "reason": "Waiting", + "status": "Unknown", + "type": "Accepted" + } + ] } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "GatewayClass describes a class of Gateways available to the user for creating\nGateway resources.\n\n\nIt is recommended that this resource be used as a template for Gateways. This\nmeans that a Gateway is based on the state of the GatewayClass at the time it\nwas created and changes to the GatewayClass or associated parameters are not\npropagated down to existing Gateways. This recommendation is intended to\nlimit the blast radius of changes to GatewayClass or associated parameters.\nIf implementations choose to propagate GatewayClass changes to existing\nGateways, that MUST be clearly documented by the implementation.\n\n\nWhenever one or more Gateways are using a GatewayClass, implementations SHOULD\nadd the `gateway-exists-finalizer.gateway.networking.k8s.io` finalizer on the\nassociated GatewayClass. This ensures that a GatewayClass associated with a\nGateway is not deleted while in use.\n\n\nGatewayClass is a Cluster level resource.", @@ -82855,17 +83011,12 @@ "name": "io.k8s.networking.gateway.v1.HTTPRoute", "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": "Spec defines the desired state of HTTPRoute.", "type": "object", + "description": "Spec defines the desired state of HTTPRoute.", "properties": { "hostnames": { "description": "Hostnames defines a set of hostnames that should match against the HTTP Host\nheader to select a HTTPRoute used to process the request. Implementations\nMUST ignore any port value specified in the HTTP Host header while\nperforming a match and (absent of any applicable header modification\nconfiguration) MUST forward this header unmodified to the backend.\n\n\nValid values for Hostnames are determined by RFC 1123 definition of a\nhostname with 2 notable exceptions:\n\n\n1. IPs are not allowed.\n2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard\n label must appear by itself as the first label.\n\n\nIf a hostname is specified by both the Listener and HTTPRoute, there\nmust be at least one intersecting hostname for the HTTPRoute to be\nattached to the Listener. For example:\n\n\n* A Listener with `test.example.com` as the hostname matches HTTPRoutes\n that have either not specified any hostnames, or have specified at\n least one of `test.example.com` or `*.example.com`.\n* A Listener with `*.example.com` as the hostname matches HTTPRoutes\n that have either not specified any hostnames or have specified at least\n one hostname that matches the Listener hostname. For example,\n `*.example.com`, `test.example.com`, and `foo.test.example.com` would\n all match. On the other hand, `example.com` and `test.example.net` would\n not match.\n\n\nHostnames that are prefixed with a wildcard label (`*.`) are interpreted\nas a suffix match. That means that a match for `*.example.com` would match\nboth `test.example.com`, and `foo.test.example.com`, but not `example.com`.\n\n\nIf both the Listener and HTTPRoute have specified hostnames, any\nHTTPRoute hostnames that do not match the Listener hostname MUST be\nignored. For example, if a Listener specified `*.example.com`, and the\nHTTPRoute specified `test.example.com` and `test.example.net`,\n`test.example.net` must not be considered for a match.\n\n\nIf both the Listener and HTTPRoute have specified hostnames, and none\nmatch with the criteria above, then the HTTPRoute is not accepted. The\nimplementation must raise an 'Accepted' Condition with a status of\n`False` in the corresponding RouteParentStatus.\n\n\nIn the event that multiple HTTPRoutes specify intersecting hostnames (e.g.\noverlapping wildcard matching and exact matching hostnames), precedence must\nbe given to rules from the HTTPRoute with the largest number of:\n\n\n* Characters in a matching non-wildcard hostname.\n* Characters in a matching hostname.\n\n\nIf ties exist across multiple Routes, the matching precedence rules for\nHTTPRouteMatches takes over.\n\n\nSupport: Core", @@ -82894,14 +83045,16 @@ "description": "Group is the group of the referent.\nWhen unspecified, \"gateway.networking.k8s.io\" is inferred.\nTo set the core API group (such as for a \"Service\" kind referent),\nGroup must be explicitly set to \"\" (empty string).\n\n\nSupport: Core", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is kind of the referent.\n\n\nThere are two kinds of parent resources with \"Core\" support:\n\n\n* Gateway (Gateway conformance profile)\n* Service (Mesh conformance profile, ClusterIP Services only)\n\n\nSupport for other resources is Implementation-Specific.", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Gateway" }, "name": { "description": "Name is the name of the referent.\n\n\nSupport: Core", @@ -82934,12 +83087,12 @@ }, "x-kubernetes-validations": [ { - "message": "sectionName must be specified when parentRefs includes 2 or more references to the same parent", - "rule": "self.all(p1, self.all(p2, p1.group == p2.group && p1.kind == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && p1.__namespace__ == p2.__namespace__ )) ? ((!has(p1.sectionName) || p1.sectionName == '') == (!has(p2.sectionName) || p2.sectionName == '')) : true))" + "rule": "self.all(p1, self.all(p2, p1.group == p2.group && p1.kind == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && p1.__namespace__ == p2.__namespace__ )) ? ((!has(p1.sectionName) || p1.sectionName == '') == (!has(p2.sectionName) || p2.sectionName == '')) : true))", + "message": "sectionName must be specified when parentRefs includes 2 or more references to the same parent" }, { - "message": "sectionName must be unique when parentRefs includes 2 or more references to the same parent", - "rule": "self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName == '')) || (has(p1.sectionName) && has(p2.sectionName) && p1.sectionName == p2.sectionName))))" + "rule": "self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName == '')) || (has(p1.sectionName) && has(p2.sectionName) && p1.sectionName == p2.sectionName))))", + "message": "sectionName must be unique when parentRefs includes 2 or more references to the same parent" } ] }, @@ -83100,14 +83253,16 @@ "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".\nWhen unspecified or empty string, core API group is inferred.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "" }, "kind": { "description": "Kind is the Kubernetes resource kind of the referent. For example\n\"Service\".\n\n\nDefaults to \"Service\" when not specified.\n\n\nExternalName services can refer to CNAME DNS records that may live\noutside of the cluster and as such are difficult to reason about in\nterms of conformance. They also may not be safe to forward to (see\nCVE-2021-25740 for more information). Implementations SHOULD NOT\nsupport ExternalName Services.\n\n\nSupport: Core (Services with a type other than ExternalName)\n\n\nSupport: Implementation-specific (Services with type ExternalName)", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Service" }, "name": { "description": "Name is the name of the referent.", @@ -83132,8 +83287,8 @@ }, "x-kubernetes-validations": [ { - "message": "Must have port for Service reference", - "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true" + "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true", + "message": "Must have port for Service reference" } ] } @@ -83178,20 +83333,20 @@ }, "x-kubernetes-validations": [ { - "message": "replaceFullPath must be specified when type is set to 'ReplaceFullPath'", - "rule": "self.type == 'ReplaceFullPath' ? has(self.replaceFullPath) : true" + "rule": "self.type == 'ReplaceFullPath' ? has(self.replaceFullPath) : true", + "message": "replaceFullPath must be specified when type is set to 'ReplaceFullPath'" }, { - "message": "type must be 'ReplaceFullPath' when replaceFullPath is set", - "rule": "has(self.replaceFullPath) ? self.type == 'ReplaceFullPath' : true" + "rule": "has(self.replaceFullPath) ? self.type == 'ReplaceFullPath' : true", + "message": "type must be 'ReplaceFullPath' when replaceFullPath is set" }, { - "message": "replacePrefixMatch must be specified when type is set to 'ReplacePrefixMatch'", - "rule": "self.type == 'ReplacePrefixMatch' ? has(self.replacePrefixMatch) : true" + "rule": "self.type == 'ReplacePrefixMatch' ? has(self.replacePrefixMatch) : true", + "message": "replacePrefixMatch must be specified when type is set to 'ReplacePrefixMatch'" }, { - "message": "type must be 'ReplacePrefixMatch' when replacePrefixMatch is set", - "rule": "has(self.replacePrefixMatch) ? self.type == 'ReplacePrefixMatch' : true" + "rule": "has(self.replacePrefixMatch) ? self.type == 'ReplacePrefixMatch' : true", + "message": "type must be 'ReplacePrefixMatch' when replacePrefixMatch is set" } ] }, @@ -83216,7 +83371,8 @@ "enum": [ 301, 302 - ] + ], + "default": 302 } } }, @@ -83350,20 +83506,20 @@ }, "x-kubernetes-validations": [ { - "message": "replaceFullPath must be specified when type is set to 'ReplaceFullPath'", - "rule": "self.type == 'ReplaceFullPath' ? has(self.replaceFullPath) : true" + "rule": "self.type == 'ReplaceFullPath' ? has(self.replaceFullPath) : true", + "message": "replaceFullPath must be specified when type is set to 'ReplaceFullPath'" }, { - "message": "type must be 'ReplaceFullPath' when replaceFullPath is set", - "rule": "has(self.replaceFullPath) ? self.type == 'ReplaceFullPath' : true" + "rule": "has(self.replaceFullPath) ? self.type == 'ReplaceFullPath' : true", + "message": "type must be 'ReplaceFullPath' when replaceFullPath is set" }, { - "message": "replacePrefixMatch must be specified when type is set to 'ReplacePrefixMatch'", - "rule": "self.type == 'ReplacePrefixMatch' ? has(self.replacePrefixMatch) : true" + "rule": "self.type == 'ReplacePrefixMatch' ? has(self.replacePrefixMatch) : true", + "message": "replacePrefixMatch must be specified when type is set to 'ReplacePrefixMatch'" }, { - "message": "type must be 'ReplacePrefixMatch' when replacePrefixMatch is set", - "rule": "has(self.replacePrefixMatch) ? self.type == 'ReplacePrefixMatch' : true" + "rule": "has(self.replacePrefixMatch) ? self.type == 'ReplacePrefixMatch' : true", + "message": "type must be 'ReplacePrefixMatch' when replacePrefixMatch is set" } ] } @@ -83372,79 +83528,79 @@ }, "x-kubernetes-validations": [ { - "message": "filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier", - "rule": "!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')" + "rule": "!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')", + "message": "filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier" }, { - "message": "filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type", - "rule": "!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')" + "rule": "!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')", + "message": "filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type" }, { - "message": "filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier", - "rule": "!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')" + "rule": "!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')", + "message": "filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier" }, { - "message": "filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type", - "rule": "!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')" + "rule": "!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')", + "message": "filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type" }, { - "message": "filter.requestMirror must be nil if the filter.type is not RequestMirror", - "rule": "!(has(self.requestMirror) && self.type != 'RequestMirror')" + "rule": "!(has(self.requestMirror) && self.type != 'RequestMirror')", + "message": "filter.requestMirror must be nil if the filter.type is not RequestMirror" }, { - "message": "filter.requestMirror must be specified for RequestMirror filter.type", - "rule": "!(!has(self.requestMirror) && self.type == 'RequestMirror')" + "rule": "!(!has(self.requestMirror) && self.type == 'RequestMirror')", + "message": "filter.requestMirror must be specified for RequestMirror filter.type" }, { - "message": "filter.requestRedirect must be nil if the filter.type is not RequestRedirect", - "rule": "!(has(self.requestRedirect) && self.type != 'RequestRedirect')" + "rule": "!(has(self.requestRedirect) && self.type != 'RequestRedirect')", + "message": "filter.requestRedirect must be nil if the filter.type is not RequestRedirect" }, { - "message": "filter.requestRedirect must be specified for RequestRedirect filter.type", - "rule": "!(!has(self.requestRedirect) && self.type == 'RequestRedirect')" + "rule": "!(!has(self.requestRedirect) && self.type == 'RequestRedirect')", + "message": "filter.requestRedirect must be specified for RequestRedirect filter.type" }, { - "message": "filter.urlRewrite must be nil if the filter.type is not URLRewrite", - "rule": "!(has(self.urlRewrite) && self.type != 'URLRewrite')" + "rule": "!(has(self.urlRewrite) && self.type != 'URLRewrite')", + "message": "filter.urlRewrite must be nil if the filter.type is not URLRewrite" }, { - "message": "filter.urlRewrite must be specified for URLRewrite filter.type", - "rule": "!(!has(self.urlRewrite) && self.type == 'URLRewrite')" + "rule": "!(!has(self.urlRewrite) && self.type == 'URLRewrite')", + "message": "filter.urlRewrite must be specified for URLRewrite filter.type" }, { - "message": "filter.extensionRef must be nil if the filter.type is not ExtensionRef", - "rule": "!(has(self.extensionRef) && self.type != 'ExtensionRef')" + "rule": "!(has(self.extensionRef) && self.type != 'ExtensionRef')", + "message": "filter.extensionRef must be nil if the filter.type is not ExtensionRef" }, { - "message": "filter.extensionRef must be specified for ExtensionRef filter.type", - "rule": "!(!has(self.extensionRef) && self.type == 'ExtensionRef')" + "rule": "!(!has(self.extensionRef) && self.type == 'ExtensionRef')", + "message": "filter.extensionRef must be specified for ExtensionRef filter.type" } ] }, "x-kubernetes-validations": [ { - "message": "May specify either httpRouteFilterRequestRedirect or httpRouteFilterRequestRewrite, but not both", - "rule": "!(self.exists(f, f.type == 'RequestRedirect') && self.exists(f, f.type == 'URLRewrite'))" + "rule": "!(self.exists(f, f.type == 'RequestRedirect') && self.exists(f, f.type == 'URLRewrite'))", + "message": "May specify either httpRouteFilterRequestRedirect or httpRouteFilterRequestRewrite, but not both" }, { - "message": "May specify either httpRouteFilterRequestRedirect or httpRouteFilterRequestRewrite, but not both", - "rule": "!(self.exists(f, f.type == 'RequestRedirect') && self.exists(f, f.type == 'URLRewrite'))" + "rule": "!(self.exists(f, f.type == 'RequestRedirect') && self.exists(f, f.type == 'URLRewrite'))", + "message": "May specify either httpRouteFilterRequestRedirect or httpRouteFilterRequestRewrite, but not both" }, { - "message": "RequestHeaderModifier filter cannot be repeated", - "rule": "self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1" + "rule": "self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1", + "message": "RequestHeaderModifier filter cannot be repeated" }, { - "message": "ResponseHeaderModifier filter cannot be repeated", - "rule": "self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1" + "rule": "self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1", + "message": "ResponseHeaderModifier filter cannot be repeated" }, { - "message": "RequestRedirect filter cannot be repeated", - "rule": "self.filter(f, f.type == 'RequestRedirect').size() <= 1" + "rule": "self.filter(f, f.type == 'RequestRedirect').size() <= 1", + "message": "RequestRedirect filter cannot be repeated" }, { - "message": "URLRewrite filter cannot be repeated", - "rule": "self.filter(f, f.type == 'URLRewrite').size() <= 1" + "rule": "self.filter(f, f.type == 'URLRewrite').size() <= 1", + "message": "URLRewrite filter cannot be repeated" } ] }, @@ -83452,14 +83608,16 @@ "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".\nWhen unspecified or empty string, core API group is inferred.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "" }, "kind": { "description": "Kind is the Kubernetes resource kind of the referent. For example\n\"Service\".\n\n\nDefaults to \"Service\" when not specified.\n\n\nExternalName services can refer to CNAME DNS records that may live\noutside of the cluster and as such are difficult to reason about in\nterms of conformance. They also may not be safe to forward to (see\nCVE-2021-25740 for more information). Implementations SHOULD NOT\nsupport ExternalName Services.\n\n\nSupport: Core (Services with a type other than ExternalName)\n\n\nSupport: Implementation-specific (Services with type ExternalName)", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Service" }, "name": { "description": "Name is the name of the referent.", @@ -83486,13 +83644,14 @@ "type": "integer", "format": "int32", "maximum": 1000000, - "minimum": 0 + "minimum": 0, + "default": 1 } }, "x-kubernetes-validations": [ { - "message": "Must have port for Service reference", - "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true" + "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true", + "message": "Must have port for Service reference" } ] } @@ -83635,14 +83794,16 @@ "description": "Group is the group of the referent. For example, \"gateway.networking.k8s.io\".\nWhen unspecified or empty string, core API group is inferred.", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "" }, "kind": { "description": "Kind is the Kubernetes resource kind of the referent. For example\n\"Service\".\n\n\nDefaults to \"Service\" when not specified.\n\n\nExternalName services can refer to CNAME DNS records that may live\noutside of the cluster and as such are difficult to reason about in\nterms of conformance. They also may not be safe to forward to (see\nCVE-2021-25740 for more information). Implementations SHOULD NOT\nsupport ExternalName Services.\n\n\nSupport: Core (Services with a type other than ExternalName)\n\n\nSupport: Implementation-specific (Services with type ExternalName)", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Service" }, "name": { "description": "Name is the name of the referent.", @@ -83667,8 +83828,8 @@ }, "x-kubernetes-validations": [ { - "message": "Must have port for Service reference", - "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true" + "rule": "(size(self.group) == 0 && self.kind == 'Service') ? has(self.port) : true", + "message": "Must have port for Service reference" } ] } @@ -83713,20 +83874,20 @@ }, "x-kubernetes-validations": [ { - "message": "replaceFullPath must be specified when type is set to 'ReplaceFullPath'", - "rule": "self.type == 'ReplaceFullPath' ? has(self.replaceFullPath) : true" + "rule": "self.type == 'ReplaceFullPath' ? has(self.replaceFullPath) : true", + "message": "replaceFullPath must be specified when type is set to 'ReplaceFullPath'" }, { - "message": "type must be 'ReplaceFullPath' when replaceFullPath is set", - "rule": "has(self.replaceFullPath) ? self.type == 'ReplaceFullPath' : true" + "rule": "has(self.replaceFullPath) ? self.type == 'ReplaceFullPath' : true", + "message": "type must be 'ReplaceFullPath' when replaceFullPath is set" }, { - "message": "replacePrefixMatch must be specified when type is set to 'ReplacePrefixMatch'", - "rule": "self.type == 'ReplacePrefixMatch' ? has(self.replacePrefixMatch) : true" + "rule": "self.type == 'ReplacePrefixMatch' ? has(self.replacePrefixMatch) : true", + "message": "replacePrefixMatch must be specified when type is set to 'ReplacePrefixMatch'" }, { - "message": "type must be 'ReplacePrefixMatch' when replacePrefixMatch is set", - "rule": "has(self.replacePrefixMatch) ? self.type == 'ReplacePrefixMatch' : true" + "rule": "has(self.replacePrefixMatch) ? self.type == 'ReplacePrefixMatch' : true", + "message": "type must be 'ReplacePrefixMatch' when replacePrefixMatch is set" } ] }, @@ -83751,7 +83912,8 @@ "enum": [ 301, 302 - ] + ], + "default": 302 } } }, @@ -83885,20 +84047,20 @@ }, "x-kubernetes-validations": [ { - "message": "replaceFullPath must be specified when type is set to 'ReplaceFullPath'", - "rule": "self.type == 'ReplaceFullPath' ? has(self.replaceFullPath) : true" + "rule": "self.type == 'ReplaceFullPath' ? has(self.replaceFullPath) : true", + "message": "replaceFullPath must be specified when type is set to 'ReplaceFullPath'" }, { - "message": "type must be 'ReplaceFullPath' when replaceFullPath is set", - "rule": "has(self.replaceFullPath) ? self.type == 'ReplaceFullPath' : true" + "rule": "has(self.replaceFullPath) ? self.type == 'ReplaceFullPath' : true", + "message": "type must be 'ReplaceFullPath' when replaceFullPath is set" }, { - "message": "replacePrefixMatch must be specified when type is set to 'ReplacePrefixMatch'", - "rule": "self.type == 'ReplacePrefixMatch' ? has(self.replacePrefixMatch) : true" + "rule": "self.type == 'ReplacePrefixMatch' ? has(self.replacePrefixMatch) : true", + "message": "replacePrefixMatch must be specified when type is set to 'ReplacePrefixMatch'" }, { - "message": "type must be 'ReplacePrefixMatch' when replacePrefixMatch is set", - "rule": "has(self.replacePrefixMatch) ? self.type == 'ReplacePrefixMatch' : true" + "rule": "has(self.replacePrefixMatch) ? self.type == 'ReplacePrefixMatch' : true", + "message": "type must be 'ReplacePrefixMatch' when replacePrefixMatch is set" } ] } @@ -83907,75 +84069,75 @@ }, "x-kubernetes-validations": [ { - "message": "filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier", - "rule": "!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')" + "rule": "!(has(self.requestHeaderModifier) && self.type != 'RequestHeaderModifier')", + "message": "filter.requestHeaderModifier must be nil if the filter.type is not RequestHeaderModifier" }, { - "message": "filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type", - "rule": "!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')" + "rule": "!(!has(self.requestHeaderModifier) && self.type == 'RequestHeaderModifier')", + "message": "filter.requestHeaderModifier must be specified for RequestHeaderModifier filter.type" }, { - "message": "filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier", - "rule": "!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')" + "rule": "!(has(self.responseHeaderModifier) && self.type != 'ResponseHeaderModifier')", + "message": "filter.responseHeaderModifier must be nil if the filter.type is not ResponseHeaderModifier" }, { - "message": "filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type", - "rule": "!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')" + "rule": "!(!has(self.responseHeaderModifier) && self.type == 'ResponseHeaderModifier')", + "message": "filter.responseHeaderModifier must be specified for ResponseHeaderModifier filter.type" }, { - "message": "filter.requestMirror must be nil if the filter.type is not RequestMirror", - "rule": "!(has(self.requestMirror) && self.type != 'RequestMirror')" + "rule": "!(has(self.requestMirror) && self.type != 'RequestMirror')", + "message": "filter.requestMirror must be nil if the filter.type is not RequestMirror" }, { - "message": "filter.requestMirror must be specified for RequestMirror filter.type", - "rule": "!(!has(self.requestMirror) && self.type == 'RequestMirror')" + "rule": "!(!has(self.requestMirror) && self.type == 'RequestMirror')", + "message": "filter.requestMirror must be specified for RequestMirror filter.type" }, { - "message": "filter.requestRedirect must be nil if the filter.type is not RequestRedirect", - "rule": "!(has(self.requestRedirect) && self.type != 'RequestRedirect')" + "rule": "!(has(self.requestRedirect) && self.type != 'RequestRedirect')", + "message": "filter.requestRedirect must be nil if the filter.type is not RequestRedirect" }, { - "message": "filter.requestRedirect must be specified for RequestRedirect filter.type", - "rule": "!(!has(self.requestRedirect) && self.type == 'RequestRedirect')" + "rule": "!(!has(self.requestRedirect) && self.type == 'RequestRedirect')", + "message": "filter.requestRedirect must be specified for RequestRedirect filter.type" }, { - "message": "filter.urlRewrite must be nil if the filter.type is not URLRewrite", - "rule": "!(has(self.urlRewrite) && self.type != 'URLRewrite')" + "rule": "!(has(self.urlRewrite) && self.type != 'URLRewrite')", + "message": "filter.urlRewrite must be nil if the filter.type is not URLRewrite" }, { - "message": "filter.urlRewrite must be specified for URLRewrite filter.type", - "rule": "!(!has(self.urlRewrite) && self.type == 'URLRewrite')" + "rule": "!(!has(self.urlRewrite) && self.type == 'URLRewrite')", + "message": "filter.urlRewrite must be specified for URLRewrite filter.type" }, { - "message": "filter.extensionRef must be nil if the filter.type is not ExtensionRef", - "rule": "!(has(self.extensionRef) && self.type != 'ExtensionRef')" + "rule": "!(has(self.extensionRef) && self.type != 'ExtensionRef')", + "message": "filter.extensionRef must be nil if the filter.type is not ExtensionRef" }, { - "message": "filter.extensionRef must be specified for ExtensionRef filter.type", - "rule": "!(!has(self.extensionRef) && self.type == 'ExtensionRef')" + "rule": "!(!has(self.extensionRef) && self.type == 'ExtensionRef')", + "message": "filter.extensionRef must be specified for ExtensionRef filter.type" } ] }, "x-kubernetes-validations": [ { - "message": "May specify either httpRouteFilterRequestRedirect or httpRouteFilterRequestRewrite, but not both", - "rule": "!(self.exists(f, f.type == 'RequestRedirect') && self.exists(f, f.type == 'URLRewrite'))" + "rule": "!(self.exists(f, f.type == 'RequestRedirect') && self.exists(f, f.type == 'URLRewrite'))", + "message": "May specify either httpRouteFilterRequestRedirect or httpRouteFilterRequestRewrite, but not both" }, { - "message": "RequestHeaderModifier filter cannot be repeated", - "rule": "self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1" + "rule": "self.filter(f, f.type == 'RequestHeaderModifier').size() <= 1", + "message": "RequestHeaderModifier filter cannot be repeated" }, { - "message": "ResponseHeaderModifier filter cannot be repeated", - "rule": "self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1" + "rule": "self.filter(f, f.type == 'ResponseHeaderModifier').size() <= 1", + "message": "ResponseHeaderModifier filter cannot be repeated" }, { - "message": "RequestRedirect filter cannot be repeated", - "rule": "self.filter(f, f.type == 'RequestRedirect').size() <= 1" + "rule": "self.filter(f, f.type == 'RequestRedirect').size() <= 1", + "message": "RequestRedirect filter cannot be repeated" }, { - "message": "URLRewrite filter cannot be repeated", - "rule": "self.filter(f, f.type == 'URLRewrite').size() <= 1" + "rule": "self.filter(f, f.type == 'URLRewrite').size() <= 1", + "message": "URLRewrite filter cannot be repeated" } ] }, @@ -84012,7 +84174,8 @@ "enum": [ "Exact", "RegularExpression" - ] + ], + "default": "Exact" }, "value": { "description": "Value is the value of HTTP Header to be matched.", @@ -84053,60 +84216,66 @@ "Exact", "PathPrefix", "RegularExpression" - ] + ], + "default": "PathPrefix" }, "value": { "description": "Value of the HTTP path to match against.", "type": "string", - "maxLength": 1024 + "maxLength": 1024, + "default": "/" } }, "x-kubernetes-validations": [ { - "message": "value must be an absolute path and start with '/' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? self.value.startsWith('/') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? self.value.startsWith('/') : true", + "message": "value must be an absolute path and start with '/' when type one of ['Exact', 'PathPrefix']" }, { - "message": "must not contain '//' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('//') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('//') : true", + "message": "must not contain '//' when type one of ['Exact', 'PathPrefix']" }, { - "message": "must not contain '/./' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('/./') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('/./') : true", + "message": "must not contain '/./' when type one of ['Exact', 'PathPrefix']" }, { - "message": "must not contain '/../' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('/../') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('/../') : true", + "message": "must not contain '/../' when type one of ['Exact', 'PathPrefix']" }, { - "message": "must not contain '%2f' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('%2f') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('%2f') : true", + "message": "must not contain '%2f' when type one of ['Exact', 'PathPrefix']" }, { - "message": "must not contain '%2F' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('%2F') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('%2F') : true", + "message": "must not contain '%2F' when type one of ['Exact', 'PathPrefix']" }, { - "message": "must not contain '#' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('#') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.contains('#') : true", + "message": "must not contain '#' when type one of ['Exact', 'PathPrefix']" }, { - "message": "must not end with '/..' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.endsWith('/..') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.endsWith('/..') : true", + "message": "must not end with '/..' when type one of ['Exact', 'PathPrefix']" }, { - "message": "must not end with '/.' when type one of ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.endsWith('/.') : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? !self.value.endsWith('/.') : true", + "message": "must not end with '/.' when type one of ['Exact', 'PathPrefix']" }, { - "message": "type must be one of ['Exact', 'PathPrefix', 'RegularExpression']", - "rule": "self.type in ['Exact','PathPrefix'] || self.type == 'RegularExpression'" + "rule": "self.type in ['Exact','PathPrefix'] || self.type == 'RegularExpression'", + "message": "type must be one of ['Exact', 'PathPrefix', 'RegularExpression']" }, { - "message": "must only contain valid characters (matching ^(?:[-A-Za-z0-9/._~!$&'()*+,;=:@]|[%][0-9a-fA-F]{2})+$) for types ['Exact', 'PathPrefix']", - "rule": "(self.type in ['Exact','PathPrefix']) ? self.value.matches(r\"\"\"^(?:[-A-Za-z0-9/._~!$&'()*+,;=:@]|[%][0-9a-fA-F]{2})+$\"\"\") : true" + "rule": "(self.type in ['Exact','PathPrefix']) ? self.value.matches(r\"\"\"^(?:[-A-Za-z0-9/._~!$&'()*+,;=:@]|[%][0-9a-fA-F]{2})+$\"\"\") : true", + "message": "must only contain valid characters (matching ^(?:[-A-Za-z0-9/._~!$&'()*+,;=:@]|[%][0-9a-fA-F]{2})+$) for types ['Exact', 'PathPrefix']" } - ] + ], + "default": { + "type": "PathPrefix", + "value": "/" + } }, "queryParams": { "description": "QueryParams specifies HTTP query parameter matchers. Multiple match\nvalues are ANDed together, meaning, a request must match all the\nspecified query parameters to select the route.\n\n\nSupport: Extended", @@ -84133,7 +84302,8 @@ "enum": [ "Exact", "RegularExpression" - ] + ], + "default": "Exact" }, "value": { "description": "Value is the value of HTTP query param to be matched.", @@ -84149,38 +84319,58 @@ "x-kubernetes-list-type": "map" } } - } + }, + "default": [ + { + "path": { + "type": "PathPrefix", + "value": "/" + } + } + ] } }, "x-kubernetes-validations": [ { - "message": "RequestRedirect filter must not be used together with backendRefs", - "rule": "(has(self.backendRefs) && size(self.backendRefs) > 0) ? (!has(self.filters) || self.filters.all(f, !has(f.requestRedirect))): true" + "rule": "(has(self.backendRefs) && size(self.backendRefs) > 0) ? (!has(self.filters) || self.filters.all(f, !has(f.requestRedirect))): true", + "message": "RequestRedirect filter must not be used together with backendRefs" }, { - "message": "When using RequestRedirect filter with path.replacePrefixMatch, exactly one PathPrefix match must be specified", - "rule": "(has(self.filters) && self.filters.exists_one(f, has(f.requestRedirect) && has(f.requestRedirect.path) && f.requestRedirect.path.type == 'ReplacePrefixMatch' && has(f.requestRedirect.path.replacePrefixMatch))) ? ((size(self.matches) != 1 || !has(self.matches[0].path) || self.matches[0].path.type != 'PathPrefix') ? false : true) : true" + "rule": "(has(self.filters) && self.filters.exists_one(f, has(f.requestRedirect) && has(f.requestRedirect.path) && f.requestRedirect.path.type == 'ReplacePrefixMatch' && has(f.requestRedirect.path.replacePrefixMatch))) ? ((size(self.matches) != 1 || !has(self.matches[0].path) || self.matches[0].path.type != 'PathPrefix') ? false : true) : true", + "message": "When using RequestRedirect filter with path.replacePrefixMatch, exactly one PathPrefix match must be specified" }, { - "message": "When using URLRewrite filter with path.replacePrefixMatch, exactly one PathPrefix match must be specified", - "rule": "(has(self.filters) && self.filters.exists_one(f, has(f.urlRewrite) && has(f.urlRewrite.path) && f.urlRewrite.path.type == 'ReplacePrefixMatch' && has(f.urlRewrite.path.replacePrefixMatch))) ? ((size(self.matches) != 1 || !has(self.matches[0].path) || self.matches[0].path.type != 'PathPrefix') ? false : true) : true" + "rule": "(has(self.filters) && self.filters.exists_one(f, has(f.urlRewrite) && has(f.urlRewrite.path) && f.urlRewrite.path.type == 'ReplacePrefixMatch' && has(f.urlRewrite.path.replacePrefixMatch))) ? ((size(self.matches) != 1 || !has(self.matches[0].path) || self.matches[0].path.type != 'PathPrefix') ? false : true) : true", + "message": "When using URLRewrite filter with path.replacePrefixMatch, exactly one PathPrefix match must be specified" }, { - "message": "Within backendRefs, when using RequestRedirect filter with path.replacePrefixMatch, exactly one PathPrefix match must be specified", - "rule": "(has(self.backendRefs) && self.backendRefs.exists_one(b, (has(b.filters) && b.filters.exists_one(f, has(f.requestRedirect) && has(f.requestRedirect.path) && f.requestRedirect.path.type == 'ReplacePrefixMatch' && has(f.requestRedirect.path.replacePrefixMatch))) )) ? ((size(self.matches) != 1 || !has(self.matches[0].path) || self.matches[0].path.type != 'PathPrefix') ? false : true) : true" + "rule": "(has(self.backendRefs) && self.backendRefs.exists_one(b, (has(b.filters) && b.filters.exists_one(f, has(f.requestRedirect) && has(f.requestRedirect.path) && f.requestRedirect.path.type == 'ReplacePrefixMatch' && has(f.requestRedirect.path.replacePrefixMatch))) )) ? ((size(self.matches) != 1 || !has(self.matches[0].path) || self.matches[0].path.type != 'PathPrefix') ? false : true) : true", + "message": "Within backendRefs, when using RequestRedirect filter with path.replacePrefixMatch, exactly one PathPrefix match must be specified" }, { - "message": "Within backendRefs, When using URLRewrite filter with path.replacePrefixMatch, exactly one PathPrefix match must be specified", - "rule": "(has(self.backendRefs) && self.backendRefs.exists_one(b, (has(b.filters) && b.filters.exists_one(f, has(f.urlRewrite) && has(f.urlRewrite.path) && f.urlRewrite.path.type == 'ReplacePrefixMatch' && has(f.urlRewrite.path.replacePrefixMatch))) )) ? ((size(self.matches) != 1 || !has(self.matches[0].path) || self.matches[0].path.type != 'PathPrefix') ? false : true) : true" + "rule": "(has(self.backendRefs) && self.backendRefs.exists_one(b, (has(b.filters) && b.filters.exists_one(f, has(f.urlRewrite) && has(f.urlRewrite.path) && f.urlRewrite.path.type == 'ReplacePrefixMatch' && has(f.urlRewrite.path.replacePrefixMatch))) )) ? ((size(self.matches) != 1 || !has(self.matches[0].path) || self.matches[0].path.type != 'PathPrefix') ? false : true) : true", + "message": "Within backendRefs, When using URLRewrite filter with path.replacePrefixMatch, exactly one PathPrefix match must be specified" } ] - } + }, + "default": [ + { + "matches": [ + { + "path": { + "type": "PathPrefix", + "value": "/" + } + } + ] + } + ] } } }, "status": { - "description": "Status defines the current state of HTTPRoute.", "type": "object", + "description": "Status defines the current state of HTTPRoute.", "required": [ "parents" ], @@ -84276,14 +84466,16 @@ "description": "Group is the group of the referent.\nWhen unspecified, \"gateway.networking.k8s.io\" is inferred.\nTo set the core API group (such as for a \"Service\" kind referent),\nGroup must be explicitly set to \"\" (empty string).\n\n\nSupport: Core", "type": "string", "maxLength": 253, - "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + "pattern": "^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "default": "gateway.networking.k8s.io" }, "kind": { "description": "Kind is kind of the referent.\n\n\nThere are two kinds of parent resources with \"Core\" support:\n\n\n* Gateway (Gateway conformance profile)\n* Service (Mesh conformance profile, ClusterIP Services only)\n\n\nSupport for other resources is Implementation-Specific.", "type": "string", "maxLength": 63, "minLength": 1, - "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$", + "default": "Gateway" }, "name": { "description": "Name is the name of the referent.\n\n\nSupport: Core", @@ -84318,6 +84510,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "HTTPRoute provides a way to route HTTP requests. This includes the capability\nto match requests by hostname, path, header, or query param. Filters can be\nused to specify additional processing steps. Backends specify where matching\nrequests should be routed.", @@ -87487,17 +87687,12 @@ "name": "io.k8s.networking.gateway.v1beta1.ReferenceGrant", "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": "Spec defines the desired state of ReferenceGrant.", "type": "object", + "description": "Spec defines the desired state of ReferenceGrant.", "required": [ "from", "to" @@ -87576,6 +87771,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "ReferenceGrant identifies kinds of resources in other namespaces that are\ntrusted to reference the specified kinds of resources in the same namespace\nas the policy.\n\n\nEach ReferenceGrant can be used to represent a unique trust relationship.\nAdditional Reference Grants can be used to add to the set of trusted\nsources of inbound references for the namespace they are defined within.\n\n\nAll cross-namespace references in Gateway API (with the exception of cross-namespace\nGateway-route attachment) require a ReferenceGrant.\n\n\nReferenceGrant is a form of runtime verification allowing users to assert\nwhich cross-namespace object references are permitted. Implementations that\nsupport ReferenceGrant MUST NOT permit cross-namespace references which have\nno grant, and MUST respond to the removal of a grant by revoking the access\nthat the grant allowed.", @@ -87887,6 +88090,1362 @@ "spec": "JSONObject" }, "namespaced": true + }, + { + "alternatives": [], + "name": "io.cncf.cni.k8s.v1.NetworkAttachmentDefinition", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "description": "NetworkAttachmentDefinition spec defines the desired state of a network attachment", + "properties": { + "config": { + "description": "NetworkAttachmentDefinition config is a JSON-formatted CNI configuration", + "type": "string" + } + } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this represen tation 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" + } + }, + "description": "NetworkAttachmentDefinition is a CRD schema specified by the Network Plumbing Working Group to express the intent for attaching pods to one or more logical or physical networks. More information available at: https://github.com/k8snetworkplumbingwg/multi-net-spec", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "k8s.cni.cncf.io", + "kind": "NetworkAttachmentDefinition", + "version": "v1" + } + ] + }, + "crd": { + "metadata": { + "name": "network-attachment-definitions.k8s.cni.cncf.io" + }, + "spec": { + "group": "k8s.cni.cncf.io", + "names": { + "plural": "network-attachment-definitions", + "singular": "network-attachment-definition", + "shortNames": [ + "net-attach-def" + ], + "kind": "NetworkAttachmentDefinition", + "listKind": "NetworkAttachmentDefinitionList" + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "NetworkAttachmentDefinition is a CRD schema specified by the Network Plumbing Working Group to express the intent for attaching pods to one or more logical or physical networks. More information available at: https://github.com/k8snetworkplumbingwg/multi-net-spec", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this represen tation 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": "NetworkAttachmentDefinition spec defines the desired state of a network attachment", + "type": "object", + "properties": { + "config": { + "description": "NetworkAttachmentDefinition config is a JSON-formatted CNI configuration", + "type": "string" + } + } + } + } + } + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "network-attachment-definitions", + "singular": "network-attachment-definition", + "shortNames": [ + "net-attach-def" + ], + "kind": "NetworkAttachmentDefinition", + "listKind": "NetworkAttachmentDefinitionList" + }, + "storedVersions": [ + "v1" + ] + } + }, + "short": "NetworkAttachmentDefinition", + "apiGroup": "k8s.cni.cncf.io", + "apiKind": "NetworkAttachmentDefinition", + "apiVersion": "v1", + "readProperties": { + "spec": "spec" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "k8s", + "sub": "k8s", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "io.x-k8s.hnc.v1alpha2.HNCConfiguration", + "definition": { + "properties": { + "metadata": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "config" + ] + } + } + }, + "spec": { + "type": "object", + "description": "HNCConfigurationSpec defines the desired state of HNC configuration.", + "properties": { + "resources": { + "description": "Resources defines the cluster-wide settings for resource synchronization. Note that 'roles' and 'rolebindings' are pre-configured by HNC with 'Propagate' mode and are omitted in the spec. Any configuration of 'roles' or 'rolebindings' are not allowed. To learn more, see https://github.com/kubernetes-sigs/hierarchical-namespaces/blob/master/docs/user-guide/how-to.md#admin-types", + "type": "array", + "items": { + "description": "ResourceSpec defines the desired synchronization state of a specific resource.", + "type": "object", + "required": [ + "resource" + ], + "properties": { + "group": { + "description": "Group of the resource defined below. This is used to unambiguously identify the resource. It may be omitted for core resources (e.g. \"secrets\").", + "type": "string" + }, + "mode": { + "description": "Synchronization mode of the kind. If the field is empty, it will be treated as \"Propagate\".", + "type": "string", + "enum": [ + "Propagate", + "Ignore", + "Remove", + "AllowPropagate" + ] + }, + "resource": { + "description": "Resource to be configured.", + "type": "string" + } + } + } + } + } + }, + "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" + }, + "status": { + "description": "HNCConfigurationStatus defines the observed state of HNC configuration.", + "type": "object", + "properties": { + "conditions": { + "description": "Conditions describes the errors, if any. If there are any conditions with \"ActivitiesHalted\" reason, this means that HNC cannot function in the affected namespaces. The HierarchyConfiguration object in each of the affected namespaces will have more information. To learn more about conditions, see https://github.com/kubernetes-sigs/hierarchical-namespaces/blob/master/docs/user-guide/concepts.md#admin-conditions.", + "type": "array", + "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", + "type": "object", + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "message is a human readable message indicating details about the transition. This may be an empty string.", + "type": "string", + "maxLength": 32768 + }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "reason": { + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", + "type": "string", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" + }, + "status": { + "description": "status of the condition, one of True, False, Unknown.", + "type": "string", + "enum": [ + "True", + "False", + "Unknown" + ] + }, + "type": { + "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", + "type": "string", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" + } + } + } + }, + "resources": { + "description": "Resources indicates the observed synchronization states of the resources.", + "type": "array", + "items": { + "description": "ResourceStatus defines the actual synchronization state of a specific resource.", + "type": "object", + "required": [ + "group", + "resource", + "version" + ], + "properties": { + "group": { + "description": "The API group of the resource being synchronized.", + "type": "string" + }, + "mode": { + "description": "Mode describes the synchronization mode of the kind. Typically, it will be the same as the mode in the spec, except when the reconciler has fallen behind or for resources with an enforced default synchronization mode, such as RBAC objects.", + "type": "string" + }, + "numPropagatedObjects": { + "description": "Tracks the number of objects that are being propagated to descendant namespaces. The propagated objects are created by HNC.", + "type": "integer", + "minimum": 0 + }, + "numSourceObjects": { + "description": "Tracks the number of objects that are created by users.", + "type": "integer", + "minimum": 0 + }, + "resource": { + "description": "The resource being synchronized.", + "type": "string" + }, + "version": { + "description": "The API version used by HNC when propagating this resource.", + "type": "string" + } + } + } + } + } + } + }, + "description": "HNCConfiguration is a cluster-wide configuration for HNC as a whole. See details in http://bit.ly/hnc-type-configuration", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "hnc.x-k8s.io", + "kind": "HNCConfiguration", + "version": "v1alpha2" + } + ] + }, + "crd": { + "metadata": { + "name": "hncconfigurations.hnc.x-k8s.io" + }, + "spec": { + "group": "hnc.x-k8s.io", + "names": { + "plural": "hncconfigurations", + "singular": "hncconfiguration", + "kind": "HNCConfiguration", + "listKind": "HNCConfigurationList" + }, + "scope": "Cluster", + "versions": [ + { + "name": "v1alpha2", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "HNCConfiguration is a cluster-wide configuration for HNC as a whole. See details in http://bit.ly/hnc-type-configuration", + "type": "object", + "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", + "properties": { + "name": { + "type": "string", + "enum": [ + "config" + ] + } + } + }, + "spec": { + "description": "HNCConfigurationSpec defines the desired state of HNC configuration.", + "type": "object", + "properties": { + "resources": { + "description": "Resources defines the cluster-wide settings for resource synchronization. Note that 'roles' and 'rolebindings' are pre-configured by HNC with 'Propagate' mode and are omitted in the spec. Any configuration of 'roles' or 'rolebindings' are not allowed. To learn more, see https://github.com/kubernetes-sigs/hierarchical-namespaces/blob/master/docs/user-guide/how-to.md#admin-types", + "type": "array", + "items": { + "description": "ResourceSpec defines the desired synchronization state of a specific resource.", + "type": "object", + "required": [ + "resource" + ], + "properties": { + "group": { + "description": "Group of the resource defined below. This is used to unambiguously identify the resource. It may be omitted for core resources (e.g. \"secrets\").", + "type": "string" + }, + "mode": { + "description": "Synchronization mode of the kind. If the field is empty, it will be treated as \"Propagate\".", + "type": "string", + "enum": [ + "Propagate", + "Ignore", + "Remove", + "AllowPropagate" + ] + }, + "resource": { + "description": "Resource to be configured.", + "type": "string" + } + } + } + } + } + }, + "status": { + "description": "HNCConfigurationStatus defines the observed state of HNC configuration.", + "type": "object", + "properties": { + "conditions": { + "description": "Conditions describes the errors, if any. If there are any conditions with \"ActivitiesHalted\" reason, this means that HNC cannot function in the affected namespaces. The HierarchyConfiguration object in each of the affected namespaces will have more information. To learn more about conditions, see https://github.com/kubernetes-sigs/hierarchical-namespaces/blob/master/docs/user-guide/concepts.md#admin-conditions.", + "type": "array", + "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", + "type": "object", + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "message is a human readable message indicating details about the transition. This may be an empty string.", + "type": "string", + "maxLength": 32768 + }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "reason": { + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", + "type": "string", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" + }, + "status": { + "description": "status of the condition, one of True, False, Unknown.", + "type": "string", + "enum": [ + "True", + "False", + "Unknown" + ] + }, + "type": { + "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", + "type": "string", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" + } + } + } + }, + "resources": { + "description": "Resources indicates the observed synchronization states of the resources.", + "type": "array", + "items": { + "description": "ResourceStatus defines the actual synchronization state of a specific resource.", + "type": "object", + "required": [ + "group", + "resource", + "version" + ], + "properties": { + "group": { + "description": "The API group of the resource being synchronized.", + "type": "string" + }, + "mode": { + "description": "Mode describes the synchronization mode of the kind. Typically, it will be the same as the mode in the spec, except when the reconciler has fallen behind or for resources with an enforced default synchronization mode, such as RBAC objects.", + "type": "string" + }, + "numPropagatedObjects": { + "description": "Tracks the number of objects that are being propagated to descendant namespaces. The propagated objects are created by HNC.", + "type": "integer", + "minimum": 0 + }, + "numSourceObjects": { + "description": "Tracks the number of objects that are created by users.", + "type": "integer", + "minimum": 0 + }, + "resource": { + "description": "The resource being synchronized.", + "type": "string" + }, + "version": { + "description": "The API version used by HNC when propagating this resource.", + "type": "string" + } + } + } + } + } + } + } + } + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "hncconfigurations", + "singular": "hncconfiguration", + "kind": "HNCConfiguration", + "listKind": "HNCConfigurationList" + }, + "storedVersions": [ + "v1alpha2" + ] + } + }, + "short": "HNCConfiguration", + "apiGroup": "hnc.x-k8s.io", + "apiKind": "HNCConfiguration", + "apiVersion": "v1alpha2", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "k8s", + "sub": "hnc", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": false + }, + { + "alternatives": [], + "name": "io.x-k8s.hnc.v1alpha2.HierarchicalResourceQuota", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "description": "Spec defines the desired quota", + "properties": { + "hard": { + "description": "Hard is the set of desired hard limits for each named resource", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + } + }, + "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" + }, + "status": { + "description": "Status defines the actual enforced quota and its current usage", + "type": "object", + "properties": { + "hard": { + "description": "Hard is the set of enforced hard limits for each named resource", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + }, + "used": { + "description": "Used is the current observed total usage of the resource in the namespace and its descendant namespaces.", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + } + } + }, + "description": "HierarchicalResourceQuota sets aggregate quota restrictions enforced for a namespace and descendant namespaces", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "hnc.x-k8s.io", + "kind": "HierarchicalResourceQuota", + "version": "v1alpha2" + } + ] + }, + "crd": { + "metadata": { + "name": "hierarchicalresourcequotas.hnc.x-k8s.io" + }, + "spec": { + "group": "hnc.x-k8s.io", + "names": { + "plural": "hierarchicalresourcequotas", + "singular": "hierarchicalresourcequota", + "shortNames": [ + "hrq" + ], + "kind": "HierarchicalResourceQuota", + "listKind": "HierarchicalResourceQuotaList" + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1alpha2", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "HierarchicalResourceQuota sets aggregate quota restrictions enforced for a namespace and descendant namespaces", + "type": "object", + "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": "Spec defines the desired quota", + "type": "object", + "properties": { + "hard": { + "description": "Hard is the set of desired hard limits for each named resource", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + }, + "status": { + "description": "Status defines the actual enforced quota and its current usage", + "type": "object", + "properties": { + "hard": { + "description": "Hard is the set of enforced hard limits for each named resource", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + }, + "used": { + "description": "Used is the current observed total usage of the resource in the namespace and its descendant namespaces.", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + } + } + } + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "hierarchicalresourcequotas", + "singular": "hierarchicalresourcequota", + "shortNames": [ + "hrq" + ], + "kind": "HierarchicalResourceQuota", + "listKind": "HierarchicalResourceQuotaList" + }, + "storedVersions": [ + "v1alpha2" + ] + } + }, + "short": "HierarchicalResourceQuota", + "apiGroup": "hnc.x-k8s.io", + "apiKind": "HierarchicalResourceQuota", + "apiVersion": "v1alpha2", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "k8s", + "sub": "hnc", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "io.x-k8s.hnc.v1alpha2.HierarchyConfiguration", + "definition": { + "properties": { + "metadata": { + "type": "object", + "properties": { + "name": { + "type": "string", + "enum": [ + "hierarchy" + ] + } + } + }, + "spec": { + "type": "object", + "description": "HierarchySpec defines the desired state of Hierarchy", + "properties": { + "allowCascadingDeletion": { + "description": "AllowCascadingDeletion indicates if the subnamespaces of this namespace are allowed to cascading delete.", + "type": "boolean" + }, + "annotations": { + "description": "Annotations is a list of annotations and values to apply to the current namespace and all of its descendants. All annotation keys must match a regex specified on the command line by --managed-namespace-annotation. A namespace cannot have a KVP that conflicts with one of its ancestors.", + "type": "array", + "items": { + "description": "MetaKVP represents a label or annotation", + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "Key is the name of the label or annotation. It must conform to the normal rules for Kubernetes label/annotation keys.", + "type": "string" + }, + "value": { + "description": "Value is the value of the label or annotation. It must confirm to the normal rules for Kubernetes label or annoation values, which are far more restrictive for labels than for anntations.", + "type": "string" + } + } + } + }, + "labels": { + "description": "Lables is a list of labels and values to apply to the current namespace and all of its descendants. All label keys must match a regex specified on the command line by --managed-namespace-label. A namespace cannot have a KVP that conflicts with one of its ancestors.", + "type": "array", + "items": { + "description": "MetaKVP represents a label or annotation", + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "Key is the name of the label or annotation. It must conform to the normal rules for Kubernetes label/annotation keys.", + "type": "string" + }, + "value": { + "description": "Value is the value of the label or annotation. It must confirm to the normal rules for Kubernetes label or annoation values, which are far more restrictive for labels than for anntations.", + "type": "string" + } + } + } + }, + "parent": { + "description": "Parent indicates the parent of this namespace, if any.", + "type": "string" + } + } + }, + "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" + }, + "status": { + "description": "HierarchyStatus defines the observed state of Hierarchy", + "type": "object", + "properties": { + "children": { + "description": "Children indicates the direct children of this namespace, if any.", + "type": "array", + "items": { + "type": "string" + } + }, + "conditions": { + "description": "Conditions describes the errors, if any.", + "type": "array", + "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", + "type": "object", + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "message is a human readable message indicating details about the transition. This may be an empty string.", + "type": "string", + "maxLength": 32768 + }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "reason": { + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", + "type": "string", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" + }, + "status": { + "description": "status of the condition, one of True, False, Unknown.", + "type": "string", + "enum": [ + "True", + "False", + "Unknown" + ] + }, + "type": { + "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", + "type": "string", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" + } + } + } + } + } + } + }, + "description": "Hierarchy is the Schema for the hierarchies API", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "hnc.x-k8s.io", + "kind": "HierarchyConfiguration", + "version": "v1alpha2" + } + ] + }, + "crd": { + "metadata": { + "name": "hierarchyconfigurations.hnc.x-k8s.io" + }, + "spec": { + "group": "hnc.x-k8s.io", + "names": { + "plural": "hierarchyconfigurations", + "singular": "hierarchyconfiguration", + "kind": "HierarchyConfiguration", + "listKind": "HierarchyConfigurationList" + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1alpha2", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Hierarchy is the Schema for the hierarchies API", + "type": "object", + "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", + "properties": { + "name": { + "type": "string", + "enum": [ + "hierarchy" + ] + } + } + }, + "spec": { + "description": "HierarchySpec defines the desired state of Hierarchy", + "type": "object", + "properties": { + "allowCascadingDeletion": { + "description": "AllowCascadingDeletion indicates if the subnamespaces of this namespace are allowed to cascading delete.", + "type": "boolean" + }, + "annotations": { + "description": "Annotations is a list of annotations and values to apply to the current namespace and all of its descendants. All annotation keys must match a regex specified on the command line by --managed-namespace-annotation. A namespace cannot have a KVP that conflicts with one of its ancestors.", + "type": "array", + "items": { + "description": "MetaKVP represents a label or annotation", + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "Key is the name of the label or annotation. It must conform to the normal rules for Kubernetes label/annotation keys.", + "type": "string" + }, + "value": { + "description": "Value is the value of the label or annotation. It must confirm to the normal rules for Kubernetes label or annoation values, which are far more restrictive for labels than for anntations.", + "type": "string" + } + } + } + }, + "labels": { + "description": "Lables is a list of labels and values to apply to the current namespace and all of its descendants. All label keys must match a regex specified on the command line by --managed-namespace-label. A namespace cannot have a KVP that conflicts with one of its ancestors.", + "type": "array", + "items": { + "description": "MetaKVP represents a label or annotation", + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "Key is the name of the label or annotation. It must conform to the normal rules for Kubernetes label/annotation keys.", + "type": "string" + }, + "value": { + "description": "Value is the value of the label or annotation. It must confirm to the normal rules for Kubernetes label or annoation values, which are far more restrictive for labels than for anntations.", + "type": "string" + } + } + } + }, + "parent": { + "description": "Parent indicates the parent of this namespace, if any.", + "type": "string" + } + } + }, + "status": { + "description": "HierarchyStatus defines the observed state of Hierarchy", + "type": "object", + "properties": { + "children": { + "description": "Children indicates the direct children of this namespace, if any.", + "type": "array", + "items": { + "type": "string" + } + }, + "conditions": { + "description": "Conditions describes the errors, if any.", + "type": "array", + "items": { + "description": "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }", + "type": "object", + "required": [ + "lastTransitionTime", + "message", + "reason", + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "type": "string", + "format": "date-time" + }, + "message": { + "description": "message is a human readable message indicating details about the transition. This may be an empty string.", + "type": "string", + "maxLength": 32768 + }, + "observedGeneration": { + "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "reason": { + "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", + "type": "string", + "maxLength": 1024, + "minLength": 1, + "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" + }, + "status": { + "description": "status of the condition, one of True, False, Unknown.", + "type": "string", + "enum": [ + "True", + "False", + "Unknown" + ] + }, + "type": { + "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", + "type": "string", + "maxLength": 316, + "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$" + } + } + } + } + } + } + } + } + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "hierarchyconfigurations", + "singular": "hierarchyconfiguration", + "kind": "HierarchyConfiguration", + "listKind": "HierarchyConfigurationList" + }, + "storedVersions": [ + "v1alpha2" + ] + } + }, + "short": "HierarchyConfiguration", + "apiGroup": "hnc.x-k8s.io", + "apiKind": "HierarchyConfiguration", + "apiVersion": "v1alpha2", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "k8s", + "sub": "hnc", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "io.x-k8s.hnc.v1alpha2.SubnamespaceAnchor", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "properties": { + "annotations": { + "description": "Annotations is a list of annotations and values to apply to the current subnamespace and all of its descendants. All annotation keys must match a regex specified on the command line by --managed-namespace-annotation. All annotation keys must be managed annotations (see HNC docs) and must match a regex", + "type": "array", + "items": { + "description": "MetaKVP represents a label or annotation", + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "Key is the name of the label or annotation. It must conform to the normal rules for Kubernetes label/annotation keys.", + "type": "string" + }, + "value": { + "description": "Value is the value of the label or annotation. It must confirm to the normal rules for Kubernetes label or annoation values, which are far more restrictive for labels than for anntations.", + "type": "string" + } + } + } + }, + "labels": { + "description": "Labels is a list of labels and values to apply to the current subnamespace and all of its descendants. All label keys must match a regex specified on the command line by --managed-namespace-label. All label keys must be managed labels (see HNC docs) and must match a regex", + "type": "array", + "items": { + "description": "MetaKVP represents a label or annotation", + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "Key is the name of the label or annotation. It must conform to the normal rules for Kubernetes label/annotation keys.", + "type": "string" + }, + "value": { + "description": "Value is the value of the label or annotation. It must confirm to the normal rules for Kubernetes label or annoation values, which are far more restrictive for labels than for anntations.", + "type": "string" + } + } + } + } + } + }, + "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" + }, + "status": { + "description": "SubnamespaceAnchorStatus defines the observed state of SubnamespaceAnchor.", + "type": "object", + "properties": { + "status": { + "description": "Describes the state of the subnamespace anchor. \n Currently, the supported values are: \n - \"Missing\": the subnamespace has not been created yet. This should be the default state when the anchor is just created. \n - \"Ok\": the subnamespace exists. This is the only good state of the anchor. \n - \"Conflict\": a namespace of the same name already exists. The admission controller will attempt to prevent this. \n - \"Forbidden\": the anchor was created in a namespace that doesn't allow children, such as kube-system or hnc-system. The admission controller will attempt to prevent this.", + "type": "string" + } + } + } + }, + "description": "SubnamespaceAnchor is the Schema for the subnamespace API. See details at http://bit.ly/hnc-self-serve-ux.", + "type": "object", + "x-kubernetes-group-version-kind": [ + { + "group": "hnc.x-k8s.io", + "kind": "SubnamespaceAnchor", + "version": "v1alpha2" + } + ] + }, + "crd": { + "metadata": { + "name": "subnamespaceanchors.hnc.x-k8s.io" + }, + "spec": { + "group": "hnc.x-k8s.io", + "names": { + "plural": "subnamespaceanchors", + "singular": "subnamespaceanchor", + "shortNames": [ + "subns" + ], + "kind": "SubnamespaceAnchor", + "listKind": "SubnamespaceAnchorList" + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1alpha2", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "SubnamespaceAnchor is the Schema for the subnamespace API. See details at http://bit.ly/hnc-self-serve-ux.", + "type": "object", + "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": { + "type": "object", + "properties": { + "annotations": { + "description": "Annotations is a list of annotations and values to apply to the current subnamespace and all of its descendants. All annotation keys must match a regex specified on the command line by --managed-namespace-annotation. All annotation keys must be managed annotations (see HNC docs) and must match a regex", + "type": "array", + "items": { + "description": "MetaKVP represents a label or annotation", + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "Key is the name of the label or annotation. It must conform to the normal rules for Kubernetes label/annotation keys.", + "type": "string" + }, + "value": { + "description": "Value is the value of the label or annotation. It must confirm to the normal rules for Kubernetes label or annoation values, which are far more restrictive for labels than for anntations.", + "type": "string" + } + } + } + }, + "labels": { + "description": "Labels is a list of labels and values to apply to the current subnamespace and all of its descendants. All label keys must match a regex specified on the command line by --managed-namespace-label. All label keys must be managed labels (see HNC docs) and must match a regex", + "type": "array", + "items": { + "description": "MetaKVP represents a label or annotation", + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "description": "Key is the name of the label or annotation. It must conform to the normal rules for Kubernetes label/annotation keys.", + "type": "string" + }, + "value": { + "description": "Value is the value of the label or annotation. It must confirm to the normal rules for Kubernetes label or annoation values, which are far more restrictive for labels than for anntations.", + "type": "string" + } + } + } + } + } + }, + "status": { + "description": "SubnamespaceAnchorStatus defines the observed state of SubnamespaceAnchor.", + "type": "object", + "properties": { + "status": { + "description": "Describes the state of the subnamespace anchor. \n Currently, the supported values are: \n - \"Missing\": the subnamespace has not been created yet. This should be the default state when the anchor is just created. \n - \"Ok\": the subnamespace exists. This is the only good state of the anchor. \n - \"Conflict\": a namespace of the same name already exists. The admission controller will attempt to prevent this. \n - \"Forbidden\": the anchor was created in a namespace that doesn't allow children, such as kube-system or hnc-system. The admission controller will attempt to prevent this.", + "type": "string" + } + } + } + } + } + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "subnamespaceanchors", + "singular": "subnamespaceanchor", + "shortNames": [ + "subns" + ], + "kind": "SubnamespaceAnchor", + "listKind": "SubnamespaceAnchorList" + }, + "storedVersions": [ + "v1alpha2" + ] + } + }, + "short": "SubnamespaceAnchor", + "apiGroup": "hnc.x-k8s.io", + "apiKind": "SubnamespaceAnchor", + "apiVersion": "v1alpha2", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "k8s", + "sub": "hnc", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true } ] } \ No newline at end of file diff --git a/data/k8up.json b/data/k8up.json index 7d62b3e..9aac7ed 100644 --- a/data/k8up.json +++ b/data/k8up.json @@ -6,17 +6,12 @@ "name": "io.k8up.v1.Archive", "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": "ArchiveSpec defines the desired state of Archive.", "type": "object", + "description": "ArchiveSpec defines the desired state of Archive.", "properties": { "activeDeadlineSeconds": { "description": "ActiveDeadlineSeconds specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it. Value must be positive integer if given.", @@ -517,7 +512,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -525,7 +528,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -627,8 +638,8 @@ } }, "status": { - "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "type": "object", + "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "properties": { "conditions": { "description": "Conditions provide a standard mechanism for higher-level status reporting from a controller. They are an extension mechanism which allows tools and other controllers to collect summary information about resources without needing to understand resource-specific status details.", @@ -695,6 +706,14 @@ "type": "boolean" } } + }, + "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" } }, "description": "Archive is the Schema for the archives API", @@ -1528,17 +1547,12 @@ "name": "io.k8up.v1.Backup", "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": "BackupSpec defines a single backup. It must contain all information to connect to the backup repository when applied. If used with defaults or schedules the operator will ensure that the defaults are applied before creating the object on the API.", "type": "object", + "description": "BackupSpec defines a single backup. It must contain all information to connect to the backup repository when applied. If used with defaults or schedules the operator will ensure that the defaults are applied before creating the object on the API.", "properties": { "activeDeadlineSeconds": { "description": "ActiveDeadlineSeconds specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it. Value must be positive integer if given.", @@ -2043,7 +2057,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -2051,7 +2073,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2074,8 +2104,8 @@ } }, "status": { - "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "type": "object", + "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "properties": { "conditions": { "description": "Conditions provide a standard mechanism for higher-level status reporting from a controller. They are an extension mechanism which allows tools and other controllers to collect summary information about resources without needing to understand resource-specific status details.", @@ -2142,6 +2172,14 @@ "type": "boolean" } } + }, + "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" } }, "description": "Backup is the Schema for the backups API", @@ -2912,17 +2950,12 @@ "name": "io.k8up.v1.Check", "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": "CheckSpec defines the desired state of Check. It needs to contain the repository information.", "type": "object", + "description": "CheckSpec defines the desired state of Check. It needs to contain the repository information.", "properties": { "activeDeadlineSeconds": { "description": "ActiveDeadlineSeconds specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it. Value must be positive integer if given.", @@ -3427,7 +3460,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -3435,7 +3476,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -3447,8 +3496,8 @@ } }, "status": { - "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "type": "object", + "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "properties": { "conditions": { "description": "Conditions provide a standard mechanism for higher-level status reporting from a controller. They are an extension mechanism which allows tools and other controllers to collect summary information about resources without needing to understand resource-specific status details.", @@ -3515,6 +3564,14 @@ "type": "boolean" } } + }, + "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" } }, "description": "Check is the Schema for the checks API", @@ -4262,17 +4319,12 @@ "name": "io.k8up.v1.PreBackupPod", "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": "PreBackupPodSpec define pods that will be launched during the backup. After the backup has finished (successfully or not), they should be removed again automatically by the operator.", "type": "object", + "description": "PreBackupPodSpec define pods that will be launched during the backup. After the backup has finished (successfully or not), they should be removed again automatically by the operator.", "properties": { "backupCommand": { "description": "BackupCommand will be added to the backupcommand annotation on the pod.", @@ -5062,7 +5114,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -5210,7 +5270,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -5231,7 +5299,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -5293,7 +5369,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -5314,7 +5398,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -5401,7 +5493,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -5437,7 +5537,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -5487,7 +5595,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -5576,7 +5685,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -5612,7 +5729,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -5637,7 +5762,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -5645,7 +5778,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -5848,7 +5989,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -5884,7 +6033,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6132,7 +6289,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -6280,7 +6445,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -6301,7 +6474,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -6363,7 +6544,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -6384,7 +6573,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -6471,7 +6668,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -6507,7 +6712,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6557,7 +6770,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -6646,7 +6860,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -6682,7 +6904,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6707,7 +6937,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -6715,7 +6953,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -6918,7 +7164,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -6954,7 +7208,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -7217,7 +7479,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -7365,7 +7635,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -7386,7 +7664,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -7448,7 +7734,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -7469,7 +7763,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -7556,7 +7858,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -7592,7 +7902,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -7642,7 +7960,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -7731,7 +8050,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -7767,7 +8094,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -7792,7 +8127,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -7800,7 +8143,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -8003,7 +8354,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -8039,7 +8398,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -8172,7 +8539,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "preemptionPolicy": { @@ -8803,7 +9178,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -8828,7 +9211,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -8913,7 +9304,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -8921,7 +9320,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -9419,7 +9826,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -9758,6 +10173,17 @@ } } } + }, + "status": { + "type": "object" + }, + "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" } }, "description": "PreBackupPod is the Schema for the prebackuppods API", @@ -15684,7 +16110,8 @@ "apiKind": "PreBackupPod", "apiVersion": "v1", "readProperties": { - "spec": "spec" + "spec": "spec", + "status": "status" }, "writeProperties": { "spec": "spec" @@ -15696,7 +16123,8 @@ "simpleExcludes": [], "gqlDefs": { "metadata": "metadata!", - "spec": "JSONObject" + "spec": "JSONObject", + "status": "JSONObject" }, "namespaced": true }, @@ -15705,17 +16133,12 @@ "name": "io.k8up.v1.Prune", "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": "PruneSpec needs to contain the repository information as well as the desired retention policies.", "type": "object", + "description": "PruneSpec needs to contain the repository information as well as the desired retention policies.", "properties": { "activeDeadlineSeconds": { "description": "ActiveDeadlineSeconds specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it. Value must be positive integer if given.", @@ -16216,7 +16639,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -16224,7 +16655,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -16280,8 +16719,8 @@ } }, "status": { - "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "type": "object", + "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "properties": { "conditions": { "description": "Conditions provide a standard mechanism for higher-level status reporting from a controller. They are an extension mechanism which allows tools and other controllers to collect summary information about resources without needing to understand resource-specific status details.", @@ -16348,6 +16787,14 @@ "type": "boolean" } } + }, + "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" } }, "description": "Prune is the Schema for the prunes API", @@ -17135,17 +17582,12 @@ "name": "io.k8up.v1.Restore", "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": "RestoreSpec can either contain an S3 restore point or a local one. For the local one you need to define an existing PVC.", "type": "object", + "description": "RestoreSpec can either contain an S3 restore point or a local one. For the local one you need to define an existing PVC.", "properties": { "activeDeadlineSeconds": { "description": "ActiveDeadlineSeconds specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it. Value must be positive integer if given.", @@ -17646,7 +18088,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -17654,7 +18104,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -17756,8 +18214,8 @@ } }, "status": { - "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "type": "object", + "description": "Status defines the observed state of a generic K8up job. It is used for the operator to determine what to do.", "properties": { "conditions": { "description": "Conditions provide a standard mechanism for higher-level status reporting from a controller. They are an extension mechanism which allows tools and other controllers to collect summary information about resources without needing to understand resource-specific status details.", @@ -17824,6 +18282,14 @@ "type": "boolean" } } + }, + "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" } }, "description": "Restore is the Schema for the restores API", @@ -18657,17 +19123,12 @@ "name": "io.k8up.v1.Schedule", "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": "ScheduleSpec defines the schedules for the various job types.", "type": "object", + "description": "ScheduleSpec defines the schedules for the various job types.", "properties": { "archive": { "description": "ArchiveSchedule manages schedules for the archival service", @@ -19175,7 +19636,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -19183,7 +19652,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -20155,7 +20632,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -20163,7 +20648,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -20699,7 +21192,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -20707,7 +21208,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -21356,7 +21865,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -21364,7 +21881,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -21432,7 +21957,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -21440,7 +21973,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -21951,7 +22492,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -21959,7 +22508,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -22071,8 +22628,8 @@ } }, "status": { - "description": "ScheduleStatus defines the observed state of Schedule", "type": "object", + "description": "ScheduleStatus defines the observed state of Schedule", "properties": { "conditions": { "description": "Conditions provide a standard mechanism for higher-level status reporting from a controller. They are an extension mechanism which allows tools and other controllers to collect summary information about resources without needing to understand resource-specific status details.", @@ -22147,6 +22704,14 @@ } } } + }, + "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" } }, "description": "Schedule is the Schema for the schedules API", @@ -25823,17 +26388,12 @@ "name": "io.k8up.v1.Snapshot", "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": "SnapshotSpec contains all information needed about a restic snapshot so it can be restored.", "type": "object", + "description": "SnapshotSpec contains all information needed about a restic snapshot so it can be restored.", "properties": { "date": { "type": "string", @@ -25854,8 +26414,16 @@ } }, "status": { - "description": "SnapshotStatus defines the observed state of Snapshot", - "type": "object" + "type": "object", + "description": "SnapshotStatus defines the observed state of Snapshot" + }, + "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" } }, "description": "Snapshot is the Schema for the snapshots API", diff --git a/data/kuberest.json b/data/kuberest.json new file mode 100644 index 0000000..0c9ad61 --- /dev/null +++ b/data/kuberest.json @@ -0,0 +1,1320 @@ +{ + "name": "kuberest", + "objects": [ + { + "alternatives": [], + "name": "fr.solidite.kuberest.v1.RestEndPoint", + "definition": { + "properties": { + "spec": { + "type": "object", + "description": "Describe the specification of a RestEndPoint", + "required": [ + "client" + ], + "properties": { + "checkFrequency": { + "description": "checkFrequency define the pooling interval (in seconds, default: 300)", + "format": "uint64", + "minimum": 0, + "type": "integer", + "nullable": true + }, + "client": { + "description": "Define the how the client should connect to the API endpoint(s)", + "type": "object", + "required": [ + "baseurl" + ], + "properties": { + "baseurl": { + "description": "The baseurl the client will use. All path will use this as a prefix", + "type": "string" + }, + "clientCert": { + "description": "mTLS client certificate", + "type": "string", + "nullable": true + }, + "clientKey": { + "description": "mTLS client key", + "type": "string", + "nullable": true + }, + "createMethod": { + "description": "Method to use when creating an object (default: Get)", + "enum": [ + "Post" + ], + "type": "string", + "nullable": true + }, + "deleteMethod": { + "description": "Method to use when deleting an object (default: Delete)", + "enum": [ + "Delete" + ], + "type": "string", + "nullable": true + }, + "headers": { + "description": "Headers to use on each requests to the endpoint", + "additionalProperties": { + "type": "string" + }, + "type": "object", + "nullable": true + }, + "keyName": { + "description": "keyName: the key of the object (default: id)", + "type": "string", + "nullable": true + }, + "readMethod": { + "description": "Method to use when reading an object (default: Post)", + "enum": [ + "Get" + ], + "type": "string", + "nullable": true + }, + "serverCa": { + "description": "For self-signed Certificates on the destination endpoint", + "type": "string", + "nullable": true + }, + "teardown": { + "description": "Delete the Objects on RestEndPoint deletion (default: true, inability to do so will block RestEndPoint)", + "type": "boolean", + "nullable": true + }, + "updateMethod": { + "description": "Method to use when updating an object (default: Put)", + "enum": [ + "Patch", + "Put", + "Post" + ], + "type": "string", + "nullable": true + } + } + }, + "inputs": { + "description": "List input source for Handlebars renders", + "type": "array", + "items": { + "description": "inputItem describe a data input for handlebars renders", + "type": "object", + "required": [ + "name" + ], + "properties": { + "configMapRef": { + "description": "The ConfigMap to select from", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name of the ConfigMap", + "type": "string" + }, + "namespace": { + "description": "Namespace of the ConfigMap, only used if the cross-namespace option is enabled (default: current object namespace)", + "type": "string", + "nullable": true + }, + "optional": { + "description": "Is the ConfigMap requiered for processing ? (default: false)", + "type": "boolean", + "nullable": true + } + }, + "nullable": true + }, + "handleBarsRender": { + "description": "an handlebars template to be rendered", + "type": "string", + "nullable": true + }, + "name": { + "description": "name of the input (used for handlebars renders)", + "type": "string" + }, + "passwordGenerator": { + "description": "A password generator", + "type": "object", + "properties": { + "length": { + "description": "length of the password (default: 32)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + }, + "weightAlphas": { + "description": "weight of alpha caracters (default: 60)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + }, + "weightNumbers": { + "description": "weight of numbers caracters (default: 20)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + }, + "weightSymbols": { + "description": "weight of symbols caracters (default: 20)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + } + }, + "nullable": true + }, + "secretRef": { + "description": "The Secret to select from", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name of the Secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the Secret, only used if the cross-namespace option is enabled (default: current object namespace)", + "type": "string", + "nullable": true + }, + "optional": { + "description": "Is the Secret optional for processing ? (default: false)", + "type": "boolean", + "nullable": true + } + }, + "nullable": true + } + } + }, + "nullable": true + }, + "outputs": { + "description": "Objects (Secret or ConfigMap) to create at the end of the process", + "type": "array", + "items": { + "description": "outputItem describe an object that will be created/updated after the path objects are all handled", + "type": "object", + "required": [ + "data", + "kind", + "metadata" + ], + "properties": { + "data": { + "description": "Data of the Output (will be base64-encoded for secret Secrets)", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "kind": { + "description": "Either ConfigMap or Secret", + "type": "string", + "enum": [ + "Secret", + "ConfigMap" + ] + }, + "metadata": { + "description": "The metadata of the Object (requiered: name)", + "type": "object", + "required": [ + "name" + ], + "properties": { + "annotations": { + "description": "annotations of the objects", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "labels": { + "description": "labels of the objects", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "name": { + "description": "name of the created object", + "type": "string" + }, + "namespace": { + "description": "namespace of the created object", + "type": "string", + "nullable": true + } + } + }, + "teardown": { + "description": "Delete the Secret on RestEndPoint deletion (default: true)", + "type": "boolean", + "nullable": true + } + } + }, + "nullable": true + }, + "post": { + "description": "A rhai post-script for final validation if any", + "type": "string", + "nullable": true + }, + "pre": { + "description": "A rhai pre-script to setup some complex variables", + "type": "string", + "nullable": true + }, + "reads": { + "description": "Allow to read some pre-existing objects", + "type": "array", + "items": { + "description": "ReadGroup describe a rest endpoint within the client sub-paths,", + "type": "object", + "required": [ + "items", + "name", + "path" + ], + "properties": { + "items": { + "description": "The list of object mapping", + "type": "array", + "items": { + "description": "readGroupItem describe an object to read with the client", + "type": "object", + "required": [ + "key", + "name" + ], + "properties": { + "key": { + "description": "configuration of this object", + "type": "string" + }, + "name": { + "description": "name of the item (used for handlebars renders)", + "type": "string" + } + } + } + }, + "name": { + "description": "name of the write (used for handlebars renders)", + "type": "string" + }, + "path": { + "description": "path appended to the client's baseurl for this group of objects", + "type": "string" + }, + "read_method": { + "description": "Method to use when reading an object (default: Get)", + "type": "string", + "enum": [ + "Get" + ], + "nullable": true + } + } + }, + "nullable": true + }, + "teardown": { + "description": "A rhai teardown-script for a final cleanup on RestEndPoint deletion", + "type": "string", + "nullable": true + }, + "templates": { + "description": "List Handlebars templates to register", + "type": "array", + "items": { + "description": "templateItem describe a list of handlebars templates that will be registered with given name", + "type": "object", + "required": [ + "name", + "template" + ], + "properties": { + "name": { + "description": "name of the input (used for handlebars renders)", + "type": "string" + }, + "template": { + "description": "The template to register", + "type": "string" + } + } + }, + "nullable": true + }, + "writes": { + "description": "Sub-paths to the client. Allow to describe the objects to create on the end-point", + "type": "array", + "items": { + "description": "writeGroup describe a rest endpoint within the client sub-paths,", + "type": "object", + "required": [ + "items", + "name", + "path" + ], + "properties": { + "createMethod": { + "description": "Method to use when creating an object (default: Get)", + "type": "string", + "enum": [ + "Post" + ], + "nullable": true + }, + "deleteMethod": { + "description": "Method to use when deleting an object (default: Delete)", + "type": "string", + "enum": [ + "Delete" + ], + "nullable": true + }, + "items": { + "description": "The list of object mapping", + "type": "array", + "items": { + "description": "writeGroupItem describe an object to maintain within", + "type": "object", + "required": [ + "name", + "values" + ], + "properties": { + "name": { + "description": "name of the item (used for handlebars renders: write..)", + "type": "string" + }, + "teardown": { + "description": "Delete the Object on RestEndPoint deletion (default: true, inability to do so will block RestEndPoint)", + "type": "boolean", + "nullable": true + }, + "values": { + "description": "configuration of this object (yaml format, use handlebars to generate your needed values)", + "type": "string" + } + } + } + }, + "keyName": { + "description": "keyName: the key of the object (default: id)", + "type": "string", + "nullable": true + }, + "keyUseSlash": { + "description": "keyUseSlash: should the update/delete url end with a slash at the end (default: false)", + "type": "boolean", + "nullable": true + }, + "name": { + "description": "name of the write (used for handlebars renders: write.)", + "type": "string" + }, + "path": { + "description": "path appended to the client's baseurl for this group of objects", + "type": "string" + }, + "readMethod": { + "description": "Method to use when reading an object (default: Post)", + "type": "string", + "enum": [ + "Get" + ], + "nullable": true + }, + "teardown": { + "description": "Delete the Objects on RestEndPoint deletion (default: true, inability to do so will block RestEndPoint)", + "type": "boolean", + "nullable": true + }, + "updateMethod": { + "description": "Method to use when updating an object (default: Patch)", + "type": "string", + "enum": [ + "Patch", + "Put", + "Post" + ], + "nullable": true + } + } + }, + "nullable": true + } + } + }, + "status": { + "type": "object", + "description": "The status object of `RestEndPoint`", + "required": [ + "conditions", + "generation", + "owned", + "ownedTarget" + ], + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "ApplicationCondition contains details about an application condition, which is usually an error or warning", + "type": "object", + "required": [ + "message", + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "LastTransitionTime is the time the condition was last observed", + "type": "string", + "format": "date-time", + "nullable": true + }, + "message": { + "description": "Message contains human-readable message indicating details about condition", + "type": "string" + }, + "status": { + "description": "Status (\"True\" or \"False\") describe if the condition is enbled", + "type": "string", + "enum": [ + "True", + "False" + ] + }, + "type": { + "description": "Type is an application condition type", + "type": "string", + "enum": [ + "Ready", + "InputMissing", + "InputFailed", + "TemplateFailed", + "PreScriptFailed", + "PostScriptFailed", + "TeardownScriptFailed", + "ReadFailed", + "WriteFailed", + "WriteDeleteFailed", + "WriteAlreadyExist", + "OutputFailed", + "OutputDeleteFailed", + "OutputAlreadyExist" + ] + } + } + } + }, + "generation": { + "type": "integer", + "format": "int64" + }, + "owned": { + "type": "array", + "items": { + "description": "List all owned k8s objects", + "type": "object", + "required": [ + "kind", + "name", + "namespace", + "uid" + ], + "properties": { + "kind": { + "description": "Either ConfigMap or Secret", + "type": "string", + "enum": [ + "Secret", + "ConfigMap" + ] + }, + "name": { + "description": "name of the owned object", + "type": "string" + }, + "namespace": { + "description": "namespace of the owned object", + "type": "string" + }, + "uid": { + "description": "uid of the owned object", + "type": "string" + } + } + } + }, + "ownedTarget": { + "type": "array", + "items": { + "description": "List all owned rest objects", + "type": "object", + "required": [ + "group", + "key", + "name", + "path", + "teardown" + ], + "properties": { + "group": { + "description": "Object writeGroup", + "type": "string" + }, + "key": { + "description": "Object key", + "type": "string" + }, + "name": { + "description": "Object name within its writeGroup", + "type": "string" + }, + "path": { + "description": "Object path within the client", + "type": "string" + }, + "teardown": { + "description": "should we manage this object deletion", + "type": "boolean" + } + } + } + } + }, + "nullable": true + }, + "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" + } + }, + "description": "Auto-generated derived type for RestEndPointSpec via `CustomResource`", + "type": "object", + "title": "RestEndPoint", + "required": [ + "spec" + ], + "x-kubernetes-group-version-kind": [ + { + "group": "kuberest.solidite.fr", + "kind": "RestEndPoint", + "version": "v1" + } + ] + }, + "crd": { + "metadata": { + "name": "restendpoints.kuberest.solidite.fr" + }, + "spec": { + "group": "kuberest.solidite.fr", + "names": { + "plural": "restendpoints", + "singular": "restendpoint", + "shortNames": [ + "rep" + ], + "kind": "RestEndPoint", + "listKind": "RestEndPointList" + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "Auto-generated derived type for RestEndPointSpec via `CustomResource`", + "type": "object", + "title": "RestEndPoint", + "required": [ + "spec" + ], + "properties": { + "spec": { + "description": "Describe the specification of a RestEndPoint", + "type": "object", + "required": [ + "client" + ], + "properties": { + "checkFrequency": { + "description": "checkFrequency define the pooling interval (in seconds, default: 300)", + "type": "integer", + "format": "uint64", + "minimum": 0, + "nullable": true + }, + "client": { + "description": "Define the how the client should connect to the API endpoint(s)", + "type": "object", + "required": [ + "baseurl" + ], + "properties": { + "baseurl": { + "description": "The baseurl the client will use. All path will use this as a prefix", + "type": "string" + }, + "clientCert": { + "description": "mTLS client certificate", + "type": "string", + "nullable": true + }, + "clientKey": { + "description": "mTLS client key", + "type": "string", + "nullable": true + }, + "createMethod": { + "description": "Method to use when creating an object (default: Get)", + "type": "string", + "enum": [ + "Post" + ], + "nullable": true + }, + "deleteMethod": { + "description": "Method to use when deleting an object (default: Delete)", + "type": "string", + "enum": [ + "Delete" + ], + "nullable": true + }, + "headers": { + "description": "Headers to use on each requests to the endpoint", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "keyName": { + "description": "keyName: the key of the object (default: id)", + "type": "string", + "nullable": true + }, + "readMethod": { + "description": "Method to use when reading an object (default: Post)", + "type": "string", + "enum": [ + "Get" + ], + "nullable": true + }, + "serverCa": { + "description": "For self-signed Certificates on the destination endpoint", + "type": "string", + "nullable": true + }, + "teardown": { + "description": "Delete the Objects on RestEndPoint deletion (default: true, inability to do so will block RestEndPoint)", + "type": "boolean", + "nullable": true + }, + "updateMethod": { + "description": "Method to use when updating an object (default: Put)", + "type": "string", + "enum": [ + "Patch", + "Put", + "Post" + ], + "nullable": true + } + } + }, + "inputs": { + "description": "List input source for Handlebars renders", + "type": "array", + "items": { + "description": "inputItem describe a data input for handlebars renders", + "type": "object", + "required": [ + "name" + ], + "properties": { + "configMapRef": { + "description": "The ConfigMap to select from", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name of the ConfigMap", + "type": "string" + }, + "namespace": { + "description": "Namespace of the ConfigMap, only used if the cross-namespace option is enabled (default: current object namespace)", + "type": "string", + "nullable": true + }, + "optional": { + "description": "Is the ConfigMap requiered for processing ? (default: false)", + "type": "boolean", + "nullable": true + } + }, + "nullable": true + }, + "handleBarsRender": { + "description": "an handlebars template to be rendered", + "type": "string", + "nullable": true + }, + "name": { + "description": "name of the input (used for handlebars renders)", + "type": "string" + }, + "passwordGenerator": { + "description": "A password generator", + "type": "object", + "properties": { + "length": { + "description": "length of the password (default: 32)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + }, + "weightAlphas": { + "description": "weight of alpha caracters (default: 60)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + }, + "weightNumbers": { + "description": "weight of numbers caracters (default: 20)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + }, + "weightSymbols": { + "description": "weight of symbols caracters (default: 20)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + } + }, + "nullable": true + }, + "secretRef": { + "description": "The Secret to select from", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name of the Secret", + "type": "string" + }, + "namespace": { + "description": "Namespace of the Secret, only used if the cross-namespace option is enabled (default: current object namespace)", + "type": "string", + "nullable": true + }, + "optional": { + "description": "Is the Secret optional for processing ? (default: false)", + "type": "boolean", + "nullable": true + } + }, + "nullable": true + } + } + }, + "nullable": true + }, + "outputs": { + "description": "Objects (Secret or ConfigMap) to create at the end of the process", + "type": "array", + "items": { + "description": "outputItem describe an object that will be created/updated after the path objects are all handled", + "type": "object", + "required": [ + "data", + "kind", + "metadata" + ], + "properties": { + "data": { + "description": "Data of the Output (will be base64-encoded for secret Secrets)", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "kind": { + "description": "Either ConfigMap or Secret", + "type": "string", + "enum": [ + "Secret", + "ConfigMap" + ] + }, + "metadata": { + "description": "The metadata of the Object (requiered: name)", + "type": "object", + "required": [ + "name" + ], + "properties": { + "annotations": { + "description": "annotations of the objects", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "labels": { + "description": "labels of the objects", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "name": { + "description": "name of the created object", + "type": "string" + }, + "namespace": { + "description": "namespace of the created object", + "type": "string", + "nullable": true + } + } + }, + "teardown": { + "description": "Delete the Secret on RestEndPoint deletion (default: true)", + "type": "boolean", + "nullable": true + } + } + }, + "nullable": true + }, + "post": { + "description": "A rhai post-script for final validation if any", + "type": "string", + "nullable": true + }, + "pre": { + "description": "A rhai pre-script to setup some complex variables", + "type": "string", + "nullable": true + }, + "reads": { + "description": "Allow to read some pre-existing objects", + "type": "array", + "items": { + "description": "ReadGroup describe a rest endpoint within the client sub-paths,", + "type": "object", + "required": [ + "items", + "name", + "path" + ], + "properties": { + "items": { + "description": "The list of object mapping", + "type": "array", + "items": { + "description": "readGroupItem describe an object to read with the client", + "type": "object", + "required": [ + "key", + "name" + ], + "properties": { + "key": { + "description": "configuration of this object", + "type": "string" + }, + "name": { + "description": "name of the item (used for handlebars renders)", + "type": "string" + } + } + } + }, + "name": { + "description": "name of the write (used for handlebars renders)", + "type": "string" + }, + "path": { + "description": "path appended to the client's baseurl for this group of objects", + "type": "string" + }, + "read_method": { + "description": "Method to use when reading an object (default: Get)", + "type": "string", + "enum": [ + "Get" + ], + "nullable": true + } + } + }, + "nullable": true + }, + "teardown": { + "description": "A rhai teardown-script for a final cleanup on RestEndPoint deletion", + "type": "string", + "nullable": true + }, + "templates": { + "description": "List Handlebars templates to register", + "type": "array", + "items": { + "description": "templateItem describe a list of handlebars templates that will be registered with given name", + "type": "object", + "required": [ + "name", + "template" + ], + "properties": { + "name": { + "description": "name of the input (used for handlebars renders)", + "type": "string" + }, + "template": { + "description": "The template to register", + "type": "string" + } + } + }, + "nullable": true + }, + "writes": { + "description": "Sub-paths to the client. Allow to describe the objects to create on the end-point", + "type": "array", + "items": { + "description": "writeGroup describe a rest endpoint within the client sub-paths,", + "type": "object", + "required": [ + "items", + "name", + "path" + ], + "properties": { + "createMethod": { + "description": "Method to use when creating an object (default: Get)", + "type": "string", + "enum": [ + "Post" + ], + "nullable": true + }, + "deleteMethod": { + "description": "Method to use when deleting an object (default: Delete)", + "type": "string", + "enum": [ + "Delete" + ], + "nullable": true + }, + "items": { + "description": "The list of object mapping", + "type": "array", + "items": { + "description": "writeGroupItem describe an object to maintain within", + "type": "object", + "required": [ + "name", + "values" + ], + "properties": { + "name": { + "description": "name of the item (used for handlebars renders: write..)", + "type": "string" + }, + "teardown": { + "description": "Delete the Object on RestEndPoint deletion (default: true, inability to do so will block RestEndPoint)", + "type": "boolean", + "nullable": true + }, + "values": { + "description": "configuration of this object (yaml format, use handlebars to generate your needed values)", + "type": "string" + } + } + } + }, + "keyName": { + "description": "keyName: the key of the object (default: id)", + "type": "string", + "nullable": true + }, + "keyUseSlash": { + "description": "keyUseSlash: should the update/delete url end with a slash at the end (default: false)", + "type": "boolean", + "nullable": true + }, + "name": { + "description": "name of the write (used for handlebars renders: write.)", + "type": "string" + }, + "path": { + "description": "path appended to the client's baseurl for this group of objects", + "type": "string" + }, + "readMethod": { + "description": "Method to use when reading an object (default: Post)", + "type": "string", + "enum": [ + "Get" + ], + "nullable": true + }, + "teardown": { + "description": "Delete the Objects on RestEndPoint deletion (default: true, inability to do so will block RestEndPoint)", + "type": "boolean", + "nullable": true + }, + "updateMethod": { + "description": "Method to use when updating an object (default: Patch)", + "type": "string", + "enum": [ + "Patch", + "Put", + "Post" + ], + "nullable": true + } + } + }, + "nullable": true + } + } + }, + "status": { + "description": "The status object of `RestEndPoint`", + "type": "object", + "required": [ + "conditions", + "generation", + "owned", + "ownedTarget" + ], + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "ApplicationCondition contains details about an application condition, which is usually an error or warning", + "type": "object", + "required": [ + "message", + "status", + "type" + ], + "properties": { + "lastTransitionTime": { + "description": "LastTransitionTime is the time the condition was last observed", + "type": "string", + "format": "date-time", + "nullable": true + }, + "message": { + "description": "Message contains human-readable message indicating details about condition", + "type": "string" + }, + "status": { + "description": "Status (\"True\" or \"False\") describe if the condition is enbled", + "type": "string", + "enum": [ + "True", + "False" + ] + }, + "type": { + "description": "Type is an application condition type", + "type": "string", + "enum": [ + "Ready", + "InputMissing", + "InputFailed", + "TemplateFailed", + "PreScriptFailed", + "PostScriptFailed", + "TeardownScriptFailed", + "ReadFailed", + "WriteFailed", + "WriteDeleteFailed", + "WriteAlreadyExist", + "OutputFailed", + "OutputDeleteFailed", + "OutputAlreadyExist" + ] + } + } + } + }, + "generation": { + "type": "integer", + "format": "int64" + }, + "owned": { + "type": "array", + "items": { + "description": "List all owned k8s objects", + "type": "object", + "required": [ + "kind", + "name", + "namespace", + "uid" + ], + "properties": { + "kind": { + "description": "Either ConfigMap or Secret", + "type": "string", + "enum": [ + "Secret", + "ConfigMap" + ] + }, + "name": { + "description": "name of the owned object", + "type": "string" + }, + "namespace": { + "description": "namespace of the owned object", + "type": "string" + }, + "uid": { + "description": "uid of the owned object", + "type": "string" + } + } + } + }, + "ownedTarget": { + "type": "array", + "items": { + "description": "List all owned rest objects", + "type": "object", + "required": [ + "group", + "key", + "name", + "path", + "teardown" + ], + "properties": { + "group": { + "description": "Object writeGroup", + "type": "string" + }, + "key": { + "description": "Object key", + "type": "string" + }, + "name": { + "description": "Object name within its writeGroup", + "type": "string" + }, + "path": { + "description": "Object path within the client", + "type": "string" + }, + "teardown": { + "description": "should we manage this object deletion", + "type": "boolean" + } + } + } + } + }, + "nullable": true + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "restendpoints", + "singular": "restendpoint", + "shortNames": [ + "rep" + ], + "kind": "RestEndPoint", + "listKind": "RestEndPointList" + }, + "storedVersions": [ + "v1" + ] + } + }, + "short": "RestEndPoint", + "apiGroup": "kuberest.solidite.fr", + "apiKind": "RestEndPoint", + "apiVersion": "v1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kuberest", + "sub": "kuberest", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + } + ] +} \ No newline at end of file diff --git a/data/kubevirt.json b/data/kubevirt.json index de84d74..7a020cb 100644 --- a/data/kubevirt.json +++ b/data/kubevirt.json @@ -6,13 +6,8 @@ "name": "io.kubevirt.v1.KubeVirt", "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": { "type": "object", @@ -254,7 +249,15 @@ }, "cpuRequest": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "defaultRuntimeClass": { "type": "string" @@ -276,7 +279,15 @@ "properties": { "memoryLimit": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -347,6 +358,7 @@ } }, "emulatedMachines": { + "description": "Deprecated. Use architectureConfiguration instead.", "type": "array", "items": { "type": "string" @@ -451,6 +463,24 @@ "description": "MaxCpuSockets holds the maximum amount of sockets that can be hotplugged", "type": "integer", "format": "int32" + }, + "maxGuest": { + "description": "MaxGuest defines the maximum amount memory that can be allocated to the guest using hotplug.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "maxHotplugRatio": { + "description": "MaxHotplugRatio is the ratio used to define the max amount of a hotplug resource that can be made available to a VM when the specific Max* setting is not defined (MaxCpuSockets, MaxGuest) Example: VM is configured with 512Mi of guest memory, if MaxGuest is not defined and MaxHotplugRatio is 2 then MaxGuest = 1Gi defaults to 4", + "type": "integer", + "format": "int32" } } }, @@ -533,7 +563,15 @@ "bandwidthPerMigration": { "description": "BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use. The value is in quantity per second. Defaults to 0 (no limit)", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "completionTimeoutPerGiB": { "description": "CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take. If a live-migration takes longer to migrate than this value multiplied by the size of the VMI, the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800", @@ -584,6 +622,36 @@ "description": "NetworkConfiguration holds network options", "type": "object", "properties": { + "binding": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "domainAttachmentType": { + "description": "DomainAttachmentType is a standard domain network attachment method kubevirt supports. Supported values: \"tap\". The standard domain attachment can be used instead or in addition to the sidecarImage. version: 1alphav1", + "type": "string" + }, + "migration": { + "description": "Migration means the VM using the plugin can be safely migrated version: 1alphav1", + "type": "object", + "properties": { + "method": { + "description": "Method defines a pre-defined migration methodology version: 1alphav1", + "type": "string" + } + } + }, + "networkAttachmentDefinition": { + "description": "NetworkAttachmentDefinition references to a NetworkAttachmentDefinition CR object. Format: , /. If namespace is not specified, VMI namespace is assumed. version: 1alphav1", + "type": "string" + }, + "sidecarImage": { + "description": "SidecarImage references a container image that runs in the virt-launcher pod. The sidecar handles (libvirt) domain configuration and optional services. version: 1alphav1", + "type": "string" + } + } + } + }, "defaultNetworkInterface": { "type": "string" }, @@ -602,6 +670,7 @@ } }, "ovmfPath": { + "description": "Deprecated. Use architectureConfiguration instead.", "type": "string" }, "permittedHostDevices": { @@ -650,12 +719,51 @@ "type": "string" }, "resourceName": { - "description": "The name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_nameThe name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_name", + "description": "The name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_name", "type": "string" } } }, "x-kubernetes-list-type": "atomic" + }, + "usb": { + "type": "array", + "items": { + "type": "object", + "required": [ + "resourceName" + ], + "properties": { + "externalResourceProvider": { + "description": "If true, KubeVirt will leave the allocation and monitoring to an external device plugin", + "type": "boolean" + }, + "resourceName": { + "description": "Identifies the list of USB host devices. e.g: kubevirt.io/storage, kubevirt.io/bootable-usb, etc", + "type": "string" + }, + "selectors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "product", + "vendor" + ], + "properties": { + "product": { + "type": "string" + }, + "vendor": { + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" } } }, @@ -747,7 +855,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -755,7 +871,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -810,9 +934,22 @@ "disableFreePageReporting": { "description": "DisableFreePageReporting disable the free page reporting of memory balloon device https://libvirt.org/formatdomain.html#memory-balloon-device. This will have effect only if AutoattachMemBalloon is not false and the vmi is not requesting any high performance feature (dedicatedCPU/realtime/hugePages), in which free page reporting is always disabled.", "type": "object" + }, + "disableSerialConsoleLog": { + "description": "DisableSerialConsoleLog disables logging the auto-attached default serial console. If not set, serial console logs will be written to a file and then streamed from a container named 'guest-console-log'. The value can be individually overridden for each VM, not relevant if AutoattachSerialConsole is disabled.", + "type": "object" } } }, + "vmRolloutStrategy": { + "description": "VMRolloutStrategy defines how changes to a VM object propagate to its VMI", + "enum": [ + "Stage", + "LiveUpdate" + ], + "type": "string", + "nullable": true + }, "vmStateStorageClass": { "description": "VMStateStorageClass is the name of the storage class to use for the PVCs created to preserve VM state, like TPM. The storage class must support RWX in filesystem mode.", "type": "string" @@ -2392,8 +2529,8 @@ } }, "status": { - "description": "KubeVirtStatus represents information pertaining to a KubeVirt deployment.", "type": "object", + "description": "KubeVirtStatus represents information pertaining to a KubeVirt deployment.", "properties": { "conditions": { "type": "array", @@ -2406,10 +2543,14 @@ ], "properties": { "lastProbeTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "lastTransitionTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "message": { "type": "string" @@ -2509,6 +2650,14 @@ "type": "string" } } + }, + "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" } }, "description": "KubeVirt represents the object deploying all KubeVirt resources", @@ -2917,6 +3066,7 @@ } }, "emulatedMachines": { + "description": "Deprecated. Use architectureConfiguration instead.", "type": "array", "items": { "type": "string" @@ -3021,6 +3171,24 @@ "description": "MaxCpuSockets holds the maximum amount of sockets that can be hotplugged", "type": "integer", "format": "int32" + }, + "maxGuest": { + "description": "MaxGuest defines the maximum amount memory that can be allocated to the guest using hotplug.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "maxHotplugRatio": { + "description": "MaxHotplugRatio is the ratio used to define the max amount of a hotplug resource that can be made available to a VM when the specific Max* setting is not defined (MaxCpuSockets, MaxGuest) Example: VM is configured with 512Mi of guest memory, if MaxGuest is not defined and MaxHotplugRatio is 2 then MaxGuest = 1Gi defaults to 4", + "type": "integer", + "format": "int32" } } }, @@ -3162,6 +3330,36 @@ "description": "NetworkConfiguration holds network options", "type": "object", "properties": { + "binding": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "domainAttachmentType": { + "description": "DomainAttachmentType is a standard domain network attachment method kubevirt supports. Supported values: \"tap\". The standard domain attachment can be used instead or in addition to the sidecarImage. version: 1alphav1", + "type": "string" + }, + "migration": { + "description": "Migration means the VM using the plugin can be safely migrated version: 1alphav1", + "type": "object", + "properties": { + "method": { + "description": "Method defines a pre-defined migration methodology version: 1alphav1", + "type": "string" + } + } + }, + "networkAttachmentDefinition": { + "description": "NetworkAttachmentDefinition references to a NetworkAttachmentDefinition CR object. Format: , /. If namespace is not specified, VMI namespace is assumed. version: 1alphav1", + "type": "string" + }, + "sidecarImage": { + "description": "SidecarImage references a container image that runs in the virt-launcher pod. The sidecar handles (libvirt) domain configuration and optional services. version: 1alphav1", + "type": "string" + } + } + } + }, "defaultNetworkInterface": { "type": "string" }, @@ -3180,6 +3378,7 @@ } }, "ovmfPath": { + "description": "Deprecated. Use architectureConfiguration instead.", "type": "string" }, "permittedHostDevices": { @@ -3228,8 +3427,47 @@ "type": "string" }, "resourceName": { - "description": "The name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_nameThe name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_name", + "description": "The name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_name", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "usb": { + "type": "array", + "items": { + "type": "object", + "required": [ + "resourceName" + ], + "properties": { + "externalResourceProvider": { + "description": "If true, KubeVirt will leave the allocation and monitoring to an external device plugin", + "type": "boolean" + }, + "resourceName": { + "description": "Identifies the list of USB host devices. e.g: kubevirt.io/storage, kubevirt.io/bootable-usb, etc", "type": "string" + }, + "selectors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "product", + "vendor" + ], + "properties": { + "product": { + "type": "string" + }, + "vendor": { + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" } } }, @@ -3404,9 +3642,22 @@ "disableFreePageReporting": { "description": "DisableFreePageReporting disable the free page reporting of memory balloon device https://libvirt.org/formatdomain.html#memory-balloon-device. This will have effect only if AutoattachMemBalloon is not false and the vmi is not requesting any high performance feature (dedicatedCPU/realtime/hugePages), in which free page reporting is always disabled.", "type": "object" + }, + "disableSerialConsoleLog": { + "description": "DisableSerialConsoleLog disables logging the auto-attached default serial console. If not set, serial console logs will be written to a file and then streamed from a container named 'guest-console-log'. The value can be individually overridden for each VM, not relevant if AutoattachSerialConsole is disabled.", + "type": "object" } } }, + "vmRolloutStrategy": { + "description": "VMRolloutStrategy defines how changes to a VM object propagate to its VMI", + "type": "string", + "enum": [ + "Stage", + "LiveUpdate" + ], + "nullable": true + }, "vmStateStorageClass": { "description": "VMStateStorageClass is the name of the storage class to use for the PVCs created to preserve VM state, like TPM. The storage class must support RWX in filesystem mode.", "type": "string" @@ -5501,6 +5752,7 @@ } }, "emulatedMachines": { + "description": "Deprecated. Use architectureConfiguration instead.", "type": "array", "items": { "type": "string" @@ -5605,6 +5857,24 @@ "description": "MaxCpuSockets holds the maximum amount of sockets that can be hotplugged", "type": "integer", "format": "int32" + }, + "maxGuest": { + "description": "MaxGuest defines the maximum amount memory that can be allocated to the guest using hotplug.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "maxHotplugRatio": { + "description": "MaxHotplugRatio is the ratio used to define the max amount of a hotplug resource that can be made available to a VM when the specific Max* setting is not defined (MaxCpuSockets, MaxGuest) Example: VM is configured with 512Mi of guest memory, if MaxGuest is not defined and MaxHotplugRatio is 2 then MaxGuest = 1Gi defaults to 4", + "type": "integer", + "format": "int32" } } }, @@ -5746,6 +6016,36 @@ "description": "NetworkConfiguration holds network options", "type": "object", "properties": { + "binding": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "domainAttachmentType": { + "description": "DomainAttachmentType is a standard domain network attachment method kubevirt supports. Supported values: \"tap\". The standard domain attachment can be used instead or in addition to the sidecarImage. version: 1alphav1", + "type": "string" + }, + "migration": { + "description": "Migration means the VM using the plugin can be safely migrated version: 1alphav1", + "type": "object", + "properties": { + "method": { + "description": "Method defines a pre-defined migration methodology version: 1alphav1", + "type": "string" + } + } + }, + "networkAttachmentDefinition": { + "description": "NetworkAttachmentDefinition references to a NetworkAttachmentDefinition CR object. Format: , /. If namespace is not specified, VMI namespace is assumed. version: 1alphav1", + "type": "string" + }, + "sidecarImage": { + "description": "SidecarImage references a container image that runs in the virt-launcher pod. The sidecar handles (libvirt) domain configuration and optional services. version: 1alphav1", + "type": "string" + } + } + } + }, "defaultNetworkInterface": { "type": "string" }, @@ -5764,6 +6064,7 @@ } }, "ovmfPath": { + "description": "Deprecated. Use architectureConfiguration instead.", "type": "string" }, "permittedHostDevices": { @@ -5812,12 +6113,51 @@ "type": "string" }, "resourceName": { - "description": "The name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_nameThe name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_name", + "description": "The name of the resource that is representing the device. Exposed by a device plugin and requested by VMs. Typically of the form vendor.com/product_name", "type": "string" } } }, "x-kubernetes-list-type": "atomic" + }, + "usb": { + "type": "array", + "items": { + "type": "object", + "required": [ + "resourceName" + ], + "properties": { + "externalResourceProvider": { + "description": "If true, KubeVirt will leave the allocation and monitoring to an external device plugin", + "type": "boolean" + }, + "resourceName": { + "description": "Identifies the list of USB host devices. e.g: kubevirt.io/storage, kubevirt.io/bootable-usb, etc", + "type": "string" + }, + "selectors": { + "type": "array", + "items": { + "type": "object", + "required": [ + "product", + "vendor" + ], + "properties": { + "product": { + "type": "string" + }, + "vendor": { + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" } } }, @@ -5988,9 +6328,22 @@ "disableFreePageReporting": { "description": "DisableFreePageReporting disable the free page reporting of memory balloon device https://libvirt.org/formatdomain.html#memory-balloon-device. This will have effect only if AutoattachMemBalloon is not false and the vmi is not requesting any high performance feature (dedicatedCPU/realtime/hugePages), in which free page reporting is always disabled.", "type": "object" + }, + "disableSerialConsoleLog": { + "description": "DisableSerialConsoleLog disables logging the auto-attached default serial console. If not set, serial console logs will be written to a file and then streamed from a container named 'guest-console-log'. The value can be individually overridden for each VM, not relevant if AutoattachSerialConsole is disabled.", + "type": "object" } } }, + "vmRolloutStrategy": { + "description": "VMRolloutStrategy defines how changes to a VM object propagate to its VMI", + "type": "string", + "enum": [ + "Stage", + "LiveUpdate" + ], + "nullable": true + }, "vmStateStorageClass": { "description": "VMStateStorageClass is the name of the storage class to use for the PVCs created to preserve VM state, like TPM. The storage class must support RWX in filesystem mode.", "type": "string" @@ -7774,17 +8127,12 @@ "name": "io.kubevirt.v1.VirtualMachine", "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": "Spec contains the specification of VirtualMachineInstance created", "type": "object", + "description": "Spec contains the specification of VirtualMachineInstance created", "required": [ "template" ], @@ -7795,530 +8143,884 @@ "items": { "required": [ "spec" - ] - } - }, - "instancetype": { - "description": "InstancetypeMatcher references a instancetype that is used to fill fields in Template", - "type": "object", - "properties": { - "inferFromVolume": { - "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", - "type": "string" - }, - "kind": { - "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", - "type": "string" - }, - "name": { - "description": "Name is the name of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype", - "type": "string" - }, - "revisionName": { - "description": "RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.", - "type": "string" - } - } - }, - "liveUpdateFeatures": { - "description": "LiveUpdateFeatures references a configuration of hotpluggable resources", - "type": "object", - "properties": { - "cpu": { - "description": "LiveUpdateCPU holds hotplug configuration for the CPU resource. Empty struct indicates that default will be used for maxSockets. Default is specified on cluster level. Absence of the struct means opt-out from CPU hotplug functionality.", - "type": "object", - "properties": { - "maxSockets": { - "description": "The maximum amount of sockets that can be hot-plugged to the Virtual Machine", - "type": "integer", - "format": "int32" - } - } - } - } - }, - "preference": { - "description": "PreferenceMatcher references a set of preference that is used to fill fields in Template", - "type": "object", - "properties": { - "inferFromVolume": { - "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", - "type": "string" - }, - "kind": { - "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", - "type": "string" - }, - "name": { - "description": "Name is the name of the VirtualMachinePreference or VirtualMachineClusterPreference", - "type": "string" - }, - "revisionName": { - "description": "RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachinePreference or VirtualMachineClusterPreference to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.", - "type": "string" - } - } - }, - "runStrategy": { - "description": "Running state indicates the requested running state of the VirtualMachineInstance mutually exclusive with Running", - "type": "string" - }, - "running": { - "description": "Running controls whether the associatied VirtualMachineInstance is created or not Mutually exclusive with RunStrategy", - "type": "boolean" - }, - "template": { - "description": "Template is the direct specification of VirtualMachineInstance", - "type": "object", - "properties": { - "metadata": { - "x-kubernetes-preserve-unknown-fields": true - }, - "spec": { - "description": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", - "type": "object", - "required": [ - "domain" - ], - "properties": { - "accessCredentials": { - "description": "Specifies a set of public keys to inject into the vm guest", - "type": "array", - "items": { - "description": "AccessCredential represents a credential source that can be used to authorize remote access to the vm guest Only one of its members may be specified.", + ], + "type": "object", + "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", + "nullable": true, + "x-kubernetes-preserve-unknown-fields": true + }, + "spec": { + "description": "DataVolumeSpec contains the DataVolume specification.", + "type": "object", + "properties": { + "checkpoints": { + "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.", + "type": "array", + "items": { + "description": "DataVolumeCheckpoint defines a stage in a warm migration.", + "type": "object", + "required": [ + "current", + "previous" + ], + "properties": { + "current": { + "description": "Current is the identifier of the snapshot created for this checkpoint.", + "type": "string" + }, + "previous": { + "description": "Previous is the identifier of the snapshot from the previous checkpoint.", + "type": "string" + } + } + } + }, + "contentType": { + "description": "DataVolumeContentType options: \"kubevirt\", \"archive\"", + "type": "string", + "enum": [ + "kubevirt", + "archive" + ] + }, + "finalCheckpoint": { + "description": "FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.", + "type": "boolean" + }, + "preallocation": { + "description": "Preallocation controls whether storage for DataVolumes should be allocated in advance.", + "type": "boolean" + }, + "priorityClassName": { + "description": "PriorityClassName for Importer, Cloner and Uploader pod", + "type": "string" + }, + "pvc": { + "description": "PVC is the PVC specification", "type": "object", "properties": { - "sshPublicKey": { - "description": "SSHPublicKey represents the source and method of applying a ssh public key into a guest virtual machine.", + "accessModes": { + "description": "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "type": "array", + "items": { + "type": "string" + } + }, + "dataSource": { + "description": "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.", "type": "object", "required": [ - "propagationMethod", - "source" + "kind", + "name" ], "properties": { - "propagationMethod": { - "description": "PropagationMethod represents how the public key is injected into the vm guest.", - "type": "object", - "properties": { - "configDrive": { - "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", - "type": "object" - }, - "qemuGuestAgent": { - "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", - "type": "object", - "required": [ - "users" - ], - "properties": { - "users": { - "description": "Users represents a list of guest users that should have the ssh public keys added to their authorized_keys file.", - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "set" - } - } - } - } + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" }, - "source": { - "description": "Source represents where the public keys are pulled from", - "type": "object", - "properties": { - "secret": { - "description": "Secret means that the access credential is pulled from a kubernetes secret", - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", - "type": "string" - } - } - } - } + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" } } }, - "userPassword": { - "description": "UserPassword represents the source and method for applying a guest user's password", + "dataSourceRef": { + "description": "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", "type": "object", "required": [ - "propagationMethod", - "source" + "kind", + "name" ], "properties": { - "propagationMethod": { - "description": "propagationMethod represents how the user passwords are injected into the vm guest.", - "type": "object", - "properties": { - "qemuGuestAgent": { - "description": "QemuGuestAgentAccessCredentailPropagation means passwords are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", - "type": "object" + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", + "type": "string" + } + } + }, + "resources": { + "description": "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "type": "object", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", + "type": "array", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.", + "type": "string" + } } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } }, - "source": { - "description": "Source represents where the user passwords are pulled from", + "requests": { + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", - "properties": { - "secret": { - "description": "Secret means that the access credential is pulled from a kubernetes secret", - "type": "object", - "required": [ - "secretName" - ], - "properties": { - "secretName": { - "description": "SecretName represents the name of the secret in the VMI's namespace", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + }, + "selector": { + "description": "selector is a label query over volumes to consider for binding.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { "type": "string" } } } } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } } } + }, + "storageClassName": { + "description": "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "volumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" } } }, - "x-kubernetes-list-type": "atomic" - }, - "affinity": { - "description": "If affinity is specifies, obey all the affinity rules", - "type": "object", - "properties": { - "nodeAffinity": { - "description": "Describes node affinity scheduling rules for the pod.", - "type": "object", - "properties": { - "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", - "type": "array", - "items": { - "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", - "type": "object", - "required": [ - "preference", - "weight" - ], - "properties": { - "preference": { - "description": "A node selector term, associated with the corresponding weight.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "A list of node selector requirements by node's labels.", - "type": "array", - "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" - }, - "values": { - "description": "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchFields": { - "description": "A list of node selector requirements by node's fields.", - "type": "array", - "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" - }, - "values": { - "description": "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - }, - "weight": { - "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", - "type": "integer", - "format": "int32" - } - } + "source": { + "description": "Source is the src of the data for the requested DataVolume", + "type": "object", + "properties": { + "blank": { + "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", + "type": "object" + }, + "gcs": { + "description": "DataVolumeSourceGCS provides the parameters to create a Data Volume from an GCS source", + "type": "object", + "required": [ + "url" + ], + "properties": { + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the GCS source", + "type": "string" + }, + "url": { + "description": "URL is the url of the GCS source", + "type": "string" } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", - "type": "object", - "required": [ - "nodeSelectorTerms" - ], - "properties": { - "nodeSelectorTerms": { - "description": "Required. A list of node selector terms. The terms are ORed.", - "type": "array", - "items": { - "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "A list of node selector requirements by node's labels.", - "type": "array", - "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" - }, - "values": { - "description": "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchFields": { - "description": "A list of node selector requirements by node's fields.", - "type": "array", - "items": { - "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "required": [ - "key", - "operator" - ], - "properties": { - "key": { - "description": "The label key that the selector applies to.", - "type": "string" - }, - "operator": { - "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", - "type": "string" - }, - "values": { - "description": "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - } - } + } + }, + "http": { + "description": "DataVolumeSourceHTTP can be either an http or https endpoint, with an optional basic auth user name and password, and an optional configmap containing additional CAs", + "type": "object", + "required": [ + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", + "type": "string" + }, + "extraHeaders": { + "description": "ExtraHeaders is a list of strings containing extra headers to include with HTTP transfer requests", + "type": "array", + "items": { + "type": "string" } + }, + "secretExtraHeaders": { + "description": "SecretExtraHeaders is a list of Secret references, each containing an extra HTTP header that may include sensitive information", + "type": "array", + "items": { + "type": "string" + } + }, + "secretRef": { + "description": "SecretRef A Secret reference, the secret should contain accessKeyId (user name) base64 encoded, and secretKey (password) also base64 encoded", + "type": "string" + }, + "url": { + "description": "URL is the URL of the http(s) endpoint", + "type": "string" + } + } + }, + "imageio": { + "description": "DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source", + "type": "object", + "required": [ + "diskId", + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap provides a reference to the CA cert", + "type": "string" + }, + "diskId": { + "description": "DiskID provides id of a disk to be imported", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the ovirt-engine", + "type": "string" + }, + "url": { + "description": "URL is the URL of the ovirt-engine", + "type": "string" + } + } + }, + "pvc": { + "description": "DataVolumeSourcePVC provides the parameters to create a Data Volume from an existing PVC", + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "description": "The name of the source PVC", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source PVC", + "type": "string" + } + } + }, + "registry": { + "description": "DataVolumeSourceRegistry provides the parameters to create a Data Volume from an registry source", + "type": "object", + "properties": { + "certConfigMap": { + "description": "CertConfigMap provides a reference to the Registry certs", + "type": "string" + }, + "imageStream": { + "description": "ImageStream is the name of image stream for import", + "type": "string" + }, + "pullMethod": { + "description": "PullMethod can be either \"pod\" (default import), or \"node\" (node docker cache based import)", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the Registry source", + "type": "string" + }, + "url": { + "description": "URL is the url of the registry source (starting with the scheme: docker, oci-archive)", + "type": "string" + } + } + }, + "s3": { + "description": "DataVolumeSourceS3 provides the parameters to create a Data Volume from an S3 source", + "type": "object", + "required": [ + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the S3 source", + "type": "string" + }, + "url": { + "description": "URL is the url of the S3 source", + "type": "string" + } + } + }, + "snapshot": { + "description": "DataVolumeSourceSnapshot provides the parameters to create a Data Volume from an existing VolumeSnapshot", + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "description": "The name of the source VolumeSnapshot", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source VolumeSnapshot", + "type": "string" + } + } + }, + "upload": { + "description": "DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source", + "type": "object" + }, + "vddk": { + "description": "DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source", + "type": "object", + "properties": { + "backingFile": { + "description": "BackingFile is the path to the virtual hard disk to migrate from vCenter/ESXi", + "type": "string" + }, + "initImageURL": { + "description": "InitImageURL is an optional URL to an image containing an extracted VDDK library, overrides v2v-vmware config map", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides a reference to a secret containing the username and password needed to access the vCenter or ESXi host", + "type": "string" + }, + "thumbprint": { + "description": "Thumbprint is the certificate thumbprint of the vCenter or ESXi host", + "type": "string" + }, + "url": { + "description": "URL is the URL of the vCenter or ESXi host with the VM to migrate", + "type": "string" + }, + "uuid": { + "description": "UUID is the UUID of the virtual machine that the backing file is attached to in vCenter/ESXi", + "type": "string" } } } - }, - "podAffinity": { - "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", - "type": "object", - "properties": { - "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", - "type": "array", - "items": { - "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", - "type": "object", - "required": [ - "podAffinityTerm", - "weight" - ], - "properties": { - "podAffinityTerm": { - "description": "Required. A pod affinity term, associated with the corresponding weight.", - "type": "object", - "required": [ - "topologyKey" - ], - "properties": { - "labelSelector": { - "description": "A label query over a set of resources, in this case pods.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "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. 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.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "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", - "additionalProperties": { - "type": "string" - } - } - } - }, - "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "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. 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.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "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", - "additionalProperties": { - "type": "string" - } - } - } - }, - "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", - "type": "array", - "items": { - "type": "string" - } - }, - "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", - "type": "string" - } + } + }, + "sourceRef": { + "description": "SourceRef is an indirect reference to the source of data for the requested DataVolume", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "kind": { + "description": "The kind of the source reference, currently only \"DataSource\" is supported", + "type": "string" + }, + "name": { + "description": "The name of the source reference", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source reference, defaults to the DataVolume namespace", + "type": "string" + } + } + }, + "storage": { + "description": "Storage is the requested storage specification", + "type": "object", + "properties": { + "accessModes": { + "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "type": "array", + "items": { + "type": "string" + } + }, + "dataSource": { + "description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "dataSourceRef": { + "description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", + "type": "string" + } + } + }, + "resources": { + "description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "type": "object", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", + "type": "array", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.", + "type": "string" } - }, - "weight": { - "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", - "type": "integer", - "format": "int32" } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } - } - }, - "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", - "type": "array", - "items": { - "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", + }, + "requests": { + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", - "required": [ - "topologyKey" - ], - "properties": { - "labelSelector": { - "description": "A label query over a set of resources, in this case pods.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "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. 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.", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + }, + "selector": { + "description": "A label query over volumes to consider for binding.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "storageClassName": { + "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" + } + } + } + } + }, + "status": { + "description": "DataVolumeTemplateDummyStatus is here simply for backwards compatibility with a previous API.", + "type": "object", + "nullable": true + } + }, + "nullable": true + } + }, + "instancetype": { + "description": "InstancetypeMatcher references a instancetype that is used to fill fields in Template", + "type": "object", + "properties": { + "inferFromVolume": { + "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", + "type": "string" + }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when inferring the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, + "kind": { + "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", + "type": "string" + }, + "name": { + "description": "Name is the name of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype", + "type": "string" + }, + "revisionName": { + "description": "RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.", + "type": "string" + } + } + }, + "preference": { + "description": "PreferenceMatcher references a set of preference that is used to fill fields in Template", + "type": "object", + "properties": { + "inferFromVolume": { + "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", + "type": "string" + }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when preference the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, + "kind": { + "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", + "type": "string" + }, + "name": { + "description": "Name is the name of the VirtualMachinePreference or VirtualMachineClusterPreference", + "type": "string" + }, + "revisionName": { + "description": "RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachinePreference or VirtualMachineClusterPreference to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.", + "type": "string" + } + } + }, + "runStrategy": { + "description": "Running state indicates the requested running state of the VirtualMachineInstance mutually exclusive with Running", + "type": "string" + }, + "running": { + "description": "Running controls whether the associatied VirtualMachineInstance is created or not Mutually exclusive with RunStrategy", + "type": "boolean" + }, + "template": { + "description": "Template is the direct specification of VirtualMachineInstance", + "type": "object", + "properties": { + "metadata": { + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true + }, + "spec": { + "description": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", + "type": "object", + "required": [ + "domain" + ], + "properties": { + "accessCredentials": { + "description": "Specifies a set of public keys to inject into the vm guest", + "type": "array", + "items": { + "description": "AccessCredential represents a credential source that can be used to authorize remote access to the vm guest Only one of its members may be specified.", + "type": "object", + "properties": { + "sshPublicKey": { + "description": "SSHPublicKey represents the source and method of applying a ssh public key into a guest virtual machine.", + "type": "object", + "required": [ + "propagationMethod", + "source" + ], + "properties": { + "propagationMethod": { + "description": "PropagationMethod represents how the public key is injected into the vm guest.", + "type": "object", + "properties": { + "configDrive": { + "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", + "type": "object" + }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, + "qemuGuestAgent": { + "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", + "type": "object", + "required": [ + "users" + ], + "properties": { + "users": { + "description": "Users represents a list of guest users that should have the ssh public keys added to their authorized_keys file.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "set" + } + } + } + } + }, + "source": { + "description": "Source represents where the public keys are pulled from", + "type": "object", + "properties": { + "secret": { + "description": "Secret means that the access credential is pulled from a kubernetes secret", + "type": "object", + "required": [ + "secretName" + ], + "properties": { + "secretName": { + "description": "SecretName represents the name of the secret in the VMI's namespace", + "type": "string" + } + } + } + } + } + } + }, + "userPassword": { + "description": "UserPassword represents the source and method for applying a guest user's password", + "type": "object", + "required": [ + "propagationMethod", + "source" + ], + "properties": { + "propagationMethod": { + "description": "propagationMethod represents how the user passwords are injected into the vm guest.", + "type": "object", + "properties": { + "qemuGuestAgent": { + "description": "QemuGuestAgentAccessCredentailPropagation means passwords are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", + "type": "object" + } + } + }, + "source": { + "description": "Source represents where the user passwords are pulled from", + "type": "object", + "properties": { + "secret": { + "description": "Secret means that the access credential is pulled from a kubernetes secret", + "type": "object", + "required": [ + "secretName" + ], + "properties": { + "secretName": { + "description": "SecretName represents the name of the secret in the VMI's namespace", + "type": "string" + } + } + } + } + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "affinity": { + "description": "If affinity is specifies, obey all the affinity rules", + "type": "object", + "properties": { + "nodeAffinity": { + "description": "Describes node affinity scheduling rules for the pod.", + "type": "object", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", + "type": "array", + "items": { + "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "type": "object", + "required": [ + "preference", + "weight" + ], + "properties": { + "preference": { + "description": "A node selector term, associated with the corresponding weight.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "A list of node selector requirements by node's labels.", + "type": "array", + "items": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", "type": "array", "items": { "type": "string" @@ -8327,24 +9029,64 @@ } } }, - "matchLabels": { - "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", - "additionalProperties": { - "type": "string" + "matchFields": { + "description": "A list of node selector requirements by node's fields.", + "type": "array", + "items": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } } } } }, - "namespaceSelector": { - "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", + "weight": { + "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", + "type": "integer", + "format": "int32" + } + } + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", + "type": "object", + "required": [ + "nodeSelectorTerms" + ], + "properties": { + "nodeSelectorTerms": { + "description": "Required. A list of node selector terms. The terms are ORed.", + "type": "array", + "items": { + "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", "type": "object", "properties": { "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "description": "A list of node selector requirements by node's labels.", "type": "array", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "type": "object", "required": [ "key", @@ -8352,15 +9094,15 @@ ], "properties": { "key": { - "description": "key is the label key that the selector applies to.", + "description": "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.", + "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "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.", + "description": "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", "type": "array", "items": { "type": "string" @@ -8369,37 +9111,48 @@ } } }, - "matchLabels": { - "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", - "additionalProperties": { - "type": "string" + "matchFields": { + "description": "A list of node selector requirements by node's fields.", + "type": "array", + "items": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } } } } - }, - "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", - "type": "array", - "items": { - "type": "string" - } - }, - "topologyKey": { - "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", - "type": "string" } } } } } }, - "podAntiAffinity": { - "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", + "podAffinity": { + "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { - "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", "type": "array", "items": { "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", @@ -8522,7 +9275,7 @@ } }, "requiredDuringSchedulingIgnoredDuringExecution": { - "description": "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", "type": "array", "items": { "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", @@ -8630,102 +9383,339 @@ } } } - } - } - }, - "architecture": { - "description": "Specifies the architecture of the vm guest you are attempting to run. Defaults to the compiled architecture of the KubeVirt components", - "type": "string" - }, - "dnsConfig": { - "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", - "type": "object", - "properties": { - "nameservers": { - "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.", - "type": "array", - "items": { - "type": "string" - } - }, - "options": { - "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.", - "type": "array", - "items": { - "description": "PodDNSConfigOption defines DNS resolver options of a pod.", - "type": "object", - "properties": { - "name": { - "description": "Required.", - "type": "string" - }, - "value": { - "type": "string" - } - } - } - }, - "searches": { - "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "dnsPolicy": { - "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", - "type": "string" - }, - "domain": { - "description": "Specification of the desired behavior of the VirtualMachineInstance on the host.", - "type": "object", - "required": [ - "devices" - ], - "properties": { - "chassis": { - "description": "Chassis specifies the chassis info passed to the domain.", - "type": "object", - "properties": { - "asset": { - "type": "string" - }, - "manufacturer": { - "type": "string" - }, - "serial": { - "type": "string" - }, - "sku": { - "type": "string" - }, - "version": { - "type": "string" - } - } }, - "clock": { - "description": "Clock sets the clock and timers of the vmi.", + "podAntiAffinity": { + "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", "type": "object", "properties": { - "timer": { - "description": "Timer specifies whih timers are attached to the vmi.", - "type": "object", - "properties": { - "hpet": { - "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", - "type": "string" - } + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "type": "array", + "items": { + "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "type": "object", + "required": [ + "podAffinityTerm", + "weight" + ], + "properties": { + "podAffinityTerm": { + "description": "Required. A pod affinity term, associated with the corresponding weight.", + "type": "object", + "required": [ + "topologyKey" + ], + "properties": { + "labelSelector": { + "description": "A label query over a set of resources, in this case pods.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "namespaceSelector": { + "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "namespaces": { + "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "type": "string" + } + } + }, + "weight": { + "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "type": "integer", + "format": "int32" + } + } + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "type": "array", + "items": { + "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", + "type": "object", + "required": [ + "topologyKey" + ], + "properties": { + "labelSelector": { + "description": "A label query over a set of resources, in this case pods.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "namespaceSelector": { + "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "namespaces": { + "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".", + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "type": "string" + } + } + } + } + } + } + } + }, + "architecture": { + "description": "Specifies the architecture of the vm guest you are attempting to run. Defaults to the compiled architecture of the KubeVirt components", + "type": "string" + }, + "dnsConfig": { + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", + "type": "object", + "properties": { + "nameservers": { + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.", + "type": "array", + "items": { + "type": "string" + } + }, + "options": { + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.", + "type": "array", + "items": { + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "type": "object", + "properties": { + "name": { + "description": "Required.", + "type": "string" + }, + "value": { + "type": "string" + } + } + } + }, + "searches": { + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "dnsPolicy": { + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", + "type": "string" + }, + "domain": { + "description": "Specification of the desired behavior of the VirtualMachineInstance on the host.", + "type": "object", + "required": [ + "devices" + ], + "properties": { + "chassis": { + "description": "Chassis specifies the chassis info passed to the domain.", + "type": "object", + "properties": { + "asset": { + "type": "string" + }, + "manufacturer": { + "type": "string" + }, + "serial": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "clock": { + "description": "Clock sets the clock and timers of the vmi.", + "type": "object", + "properties": { + "timer": { + "description": "Timer specifies whih timers are attached to the vmi.", + "type": "object", + "properties": { + "hpet": { + "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", + "type": "string" + } } }, "hyperv": { @@ -8898,7 +9888,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -9006,6 +9996,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -9047,6 +10041,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -9181,6 +10179,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -9237,7 +10248,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -9253,7 +10264,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -9305,6 +10316,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -9597,6 +10612,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -9615,6 +10640,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -9684,6 +10713,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -9693,6 +10730,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -9715,7 +10756,15 @@ "guest": { "description": "Guest allows to specifying the amount of memory which is visible inside the Guest OS. The Guest must lie between Requests and Limits from the resources section. Defaults to the requested memory in the resources section if not specified.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "hugepages": { "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.", @@ -9726,6 +10775,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -9738,7 +10800,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "overcommitGuestOverhead": { @@ -9750,7 +10820,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -9758,7 +10836,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -9830,7 +10908,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -9866,7 +10952,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10001,7 +11095,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -10037,7 +11139,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10400,7 +11510,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -10431,7 +11549,15 @@ "capacity": { "description": "Capacity of the sparse disk.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10469,7 +11595,15 @@ "capacity": { "description": "Capacity of the sparse disk", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "path": { "description": "The path to HostDisk image located on the cluster", @@ -10595,8 +11729,8 @@ } }, "status": { - "description": "Status holds the current state of the controller and brief information about its associated VirtualMachineInstance", "type": "object", + "description": "Status holds the current state of the controller and brief information about its associated VirtualMachineInstance", "properties": { "conditions": { "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", @@ -10610,10 +11744,14 @@ ], "properties": { "lastProbeTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "lastTransitionTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "message": { "type": "string" @@ -10639,53 +11777,46 @@ "type": "integer", "format": "int64" }, - "interfaceRequests": { - "description": "InterfaceRequests indicates a list of interfaces added to the VMI template and hot-plugged on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addInterfaceOptions": { - "description": "AddInterfaceOptions when set indicates a network interface should be added. The details within this field specify how to add the interface", - "type": "object", - "required": [ - "name", - "networkAttachmentDefinitionName" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - }, - "networkAttachmentDefinitionName": { - "description": "NetworkAttachmentDefinitionName references a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", - "type": "string" - } - } - }, - "removeInterfaceOptions": { - "description": "RemoveInterfaceOptions when set indicates a network interface should be removed. The details within this field specify how to remove the interface", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, "memoryDumpRequest": { "description": "MemoryDumpRequest tracks memory dump request phase and info of getting a memory dump to the given pvc", "required": [ "claimName", "phase" - ] + ], + "type": "object", + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "EndTimestamp represents the time the memory dump was completed", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "StartTimestamp represents the time the memory dump started", + "type": "string", + "format": "date-time" + } + }, + "nullable": true }, "observedGeneration": { "description": "ObservedGeneration is the generation observed by the vmi when started.", @@ -10694,7 +11825,8 @@ }, "printableStatus": { "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" + "type": "string", + "default": "Stopped" }, "ready": { "description": "Ready indicates if the virtual machine is running and ready", @@ -10704,12 +11836,31 @@ "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", "type": "string" }, + "runStrategy": { + "description": "RunStrategy tracks the last recorded RunStrategy used by the VM. This is needed to correctly process the next strategy (for now only the RerunOnFailure)", + "type": "string" + }, "snapshotInProgress": { "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", "type": "string" }, "startFailure": { - "description": "StartFailure tracks consecutive VMI startup failures for the purposes of crash loop backoffs" + "description": "StartFailure tracks consecutive VMI startup failures for the purposes of crash loop backoffs", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer" + }, + "lastFailedVMIUID": { + "description": "UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated.", + "type": "string" + }, + "retryAfterTimestamp": { + "type": "string", + "format": "date-time" + } + }, + "nullable": true }, "stateChangeRequests": { "description": "StateChangeRequests indicates a list of actions that should be taken on a VMI e.g. stop a specific VMI then start a new one.", @@ -10840,6 +11991,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -10989,6 +12144,14 @@ } } } + }, + "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" } }, "description": "VirtualMachine handles the VirtualMachines that are not running or are in a stopped state The VirtualMachine contains the template to create the VirtualMachineInstance. It also mirrors the running state of the created VirtualMachineInstance in its status.", @@ -11717,6 +12880,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when inferring the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", "type": "string" @@ -11731,23 +12898,6 @@ } } }, - "liveUpdateFeatures": { - "description": "LiveUpdateFeatures references a configuration of hotpluggable resources", - "type": "object", - "properties": { - "cpu": { - "description": "LiveUpdateCPU holds hotplug configuration for the CPU resource. Empty struct indicates that default will be used for maxSockets. Default is specified on cluster level. Absence of the struct means opt-out from CPU hotplug functionality.", - "type": "object", - "properties": { - "maxSockets": { - "description": "The maximum amount of sockets that can be hot-plugged to the Virtual Machine", - "type": "integer", - "format": "int32" - } - } - } - } - }, "preference": { "description": "PreferenceMatcher references a set of preference that is used to fill fields in Template", "type": "object", @@ -11756,6 +12906,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when preference the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", "type": "string" @@ -11817,6 +12971,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -12811,7 +13969,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -12919,6 +14077,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -12960,6 +14122,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -13094,6 +14260,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -13150,7 +14329,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -13166,7 +14345,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -13218,6 +14397,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -13510,6 +14693,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -13528,6 +14721,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -13597,6 +14794,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -13606,6 +14811,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -13647,6 +14856,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -13695,7 +14917,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -14636,47 +15858,6 @@ "type": "integer", "format": "int64" }, - "interfaceRequests": { - "description": "InterfaceRequests indicates a list of interfaces added to the VMI template and hot-plugged on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addInterfaceOptions": { - "description": "AddInterfaceOptions when set indicates a network interface should be added. The details within this field specify how to add the interface", - "type": "object", - "required": [ - "name", - "networkAttachmentDefinitionName" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - }, - "networkAttachmentDefinitionName": { - "description": "NetworkAttachmentDefinitionName references a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", - "type": "string" - } - } - }, - "removeInterfaceOptions": { - "description": "RemoveInterfaceOptions when set indicates a network interface should be removed. The details within this field specify how to remove the interface", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, "memoryDumpRequest": { "description": "MemoryDumpRequest tracks memory dump request phase and info of getting a memory dump to the given pvc", "type": "object", @@ -14725,7 +15906,8 @@ }, "printableStatus": { "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" + "type": "string", + "default": "Stopped" }, "ready": { "description": "Ready indicates if the virtual machine is running and ready", @@ -14735,6 +15917,10 @@ "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", "type": "string" }, + "runStrategy": { + "description": "RunStrategy tracks the last recorded RunStrategy used by the VM. This is needed to correctly process the next strategy (for now only the RerunOnFailure)", + "type": "string" + }, "snapshotInProgress": { "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", "type": "string" @@ -14886,6 +16072,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -15755,6 +16945,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when inferring the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", "type": "string" @@ -15769,23 +16963,6 @@ } } }, - "liveUpdateFeatures": { - "description": "LiveUpdateFeatures references a configuration of hotpluggable resources", - "type": "object", - "properties": { - "cpu": { - "description": "LiveUpdateCPU holds hotplug configuration for the CPU resource. Empty struct indicates that default will be used for maxSockets. Default is specified on cluster level. Absence of the struct means opt-out from CPU hotplug functionality.", - "type": "object", - "properties": { - "maxSockets": { - "description": "The maximum amount of sockets that can be hot-plugged to the Virtual Machine", - "type": "integer", - "format": "int32" - } - } - } - } - }, "preference": { "description": "PreferenceMatcher references a set of preference that is used to fill fields in Template", "type": "object", @@ -15794,6 +16971,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when preference the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", "type": "string" @@ -15855,6 +17036,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -16849,7 +18034,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -16957,6 +18142,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -16998,6 +18187,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -17132,6 +18325,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -17188,7 +18394,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -17204,7 +18410,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -17256,6 +18462,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -17548,6 +18758,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -17566,6 +18786,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -17635,6 +18859,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -17644,6 +18876,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -17685,6 +18921,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -17733,7 +18982,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -18674,47 +19923,6 @@ "type": "integer", "format": "int64" }, - "interfaceRequests": { - "description": "InterfaceRequests indicates a list of interfaces added to the VMI template and hot-plugged on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addInterfaceOptions": { - "description": "AddInterfaceOptions when set indicates a network interface should be added. The details within this field specify how to add the interface", - "type": "object", - "required": [ - "name", - "networkAttachmentDefinitionName" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - }, - "networkAttachmentDefinitionName": { - "description": "NetworkAttachmentDefinitionName references a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", - "type": "string" - } - } - }, - "removeInterfaceOptions": { - "description": "RemoveInterfaceOptions when set indicates a network interface should be removed. The details within this field specify how to remove the interface", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, "memoryDumpRequest": { "description": "MemoryDumpRequest tracks memory dump request phase and info of getting a memory dump to the given pvc", "type": "object", @@ -18763,7 +19971,8 @@ }, "printableStatus": { "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" + "type": "string", + "default": "Stopped" }, "ready": { "description": "Ready indicates if the virtual machine is running and ready", @@ -18773,6 +19982,10 @@ "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", "type": "string" }, + "runStrategy": { + "description": "RunStrategy tracks the last recorded RunStrategy used by the VM. This is needed to correctly process the next strategy (for now only the RerunOnFailure)", + "type": "string" + }, "snapshotInProgress": { "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", "type": "string" @@ -18924,6 +20137,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -19168,17 +20385,12 @@ "name": "io.kubevirt.v1.VirtualMachineInstance", "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": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", "type": "object", + "description": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", "required": [ "domain" ], @@ -19206,6 +20418,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -20200,7 +21416,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -20308,6 +21524,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -20349,6 +21569,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -20483,6 +21707,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -20539,7 +21776,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -20555,7 +21792,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -20607,6 +21844,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -20899,6 +22140,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -20917,6 +22168,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -20986,6 +22241,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -20995,6 +22258,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -21017,7 +22284,15 @@ "guest": { "description": "Guest allows to specifying the amount of memory which is visible inside the Guest OS. The Guest must lie between Requests and Limits from the resources section. Defaults to the requested memory in the resources section if not specified.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "hugepages": { "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.", @@ -21028,6 +22303,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -21040,7 +22328,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "overcommitGuestOverhead": { @@ -21052,7 +22348,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -21060,7 +22364,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -21132,7 +22436,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -21168,7 +22480,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -21303,7 +22623,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -21339,7 +22667,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -21702,7 +23038,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -21733,7 +23077,15 @@ "capacity": { "description": "Capacity of the sparse disk.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -21771,7 +23123,15 @@ "capacity": { "description": "Capacity of the sparse disk", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "path": { "description": "The path to HostDisk image located on the cluster", @@ -21892,6 +23252,14 @@ } } }, + "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" + }, "status": { "description": "Status is the high level overview of how the VirtualMachineInstance is doing. It contains information available to controllers and users.", "type": "object", @@ -21919,10 +23287,14 @@ ], "properties": { "lastProbeTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "lastTransitionTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "message": { "type": "string" @@ -22047,6 +23419,34 @@ } } }, + "kernelBootStatus": { + "description": "KernelBootStatus contains info about the kernelBootContainer", + "type": "object", + "properties": { + "initrdInfo": { + "description": "InitrdInfo show info about the initrd file", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the initrd file", + "type": "integer", + "format": "int32" + } + } + }, + "kernelInfo": { + "description": "KernelInfo show info about the kernel image", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the kernel image", + "type": "integer", + "format": "int32" + } + } + } + } + }, "launcherContainerImageVersion": { "description": "LauncherContainerImageVersion indicates what container image is currently active for the vmi.", "type": "string" @@ -22061,6 +23461,51 @@ } } }, + "memory": { + "description": "Memory shows various informations about the VirtualMachine memory.", + "type": "object", + "properties": { + "guestAtBoot": { + "description": "GuestAtBoot specifies with how much memory the VirtualMachine intiallly booted with.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "guestCurrent": { + "description": "GuestCurrent specifies how much memory is currently available for the VirtualMachine.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "guestRequested": { + "description": "GuestRequested specifies how much memory was requested (hotplug) for the VirtualMachine.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, "migrationMethod": { "description": "Represents the method using which the vmi can be migrated: live migration or block migration", "type": "string" @@ -22083,12 +23528,18 @@ }, "endTimestamp": { "description": "The time the migration action ended", - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "failed": { "description": "Indicates that the migration failed", "type": "boolean" }, + "failureReason": { + "description": "Contains the reason why the migration failed", + "type": "string" + }, "migrationConfiguration": { "description": "Migration configurations to apply", "type": "object", @@ -22104,7 +23555,15 @@ "bandwidthPerMigration": { "description": "BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use. The value is in quantity per second. Defaults to 0 (no limit)", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "completionTimeoutPerGiB": { "description": "CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take. If a live-migration takes longer to migrate than this value multiplied by the size of the VMI, the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800", @@ -22164,9 +23623,14 @@ "description": "The source node that the VMI originated on", "type": "string" }, + "sourcePod": { + "type": "string" + }, "startTimestamp": { "description": "The time the migration action began", - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "targetAttachmentPodUID": { "description": "The UID of the target attachment pod for hotplug volumes", @@ -22287,6 +23751,17 @@ "target" ], "properties": { + "containerDiskVolume": { + "description": "ContainerDiskVolume shows info about the containerdisk, if the volume is a containerdisk", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the rootdisk or kernel artifacts inside the containerdisk", + "type": "integer", + "format": "int32" + } + } + }, "hotplugVolume": { "description": "If the volume is hotplug, this will contain the hotplug status.", "type": "object", @@ -22350,7 +23825,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "filesystemOverhead": { @@ -22367,7 +23850,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "volumeMode": { @@ -22487,6 +23978,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -23481,7 +24976,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -23589,6 +25084,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -23630,6 +25129,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -23764,6 +25267,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -23820,7 +25336,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -23836,7 +25352,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -23888,6 +25404,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -24180,6 +25700,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -24198,6 +25728,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -24267,6 +25801,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -24276,6 +25818,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -24317,6 +25863,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -24365,7 +25924,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -25412,6 +26971,34 @@ } } }, + "kernelBootStatus": { + "description": "KernelBootStatus contains info about the kernelBootContainer", + "type": "object", + "properties": { + "initrdInfo": { + "description": "InitrdInfo show info about the initrd file", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the initrd file", + "type": "integer", + "format": "int32" + } + } + }, + "kernelInfo": { + "description": "KernelInfo show info about the kernel image", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the kernel image", + "type": "integer", + "format": "int32" + } + } + } + } + }, "launcherContainerImageVersion": { "description": "LauncherContainerImageVersion indicates what container image is currently active for the vmi.", "type": "string" @@ -25426,6 +27013,51 @@ } } }, + "memory": { + "description": "Memory shows various informations about the VirtualMachine memory.", + "type": "object", + "properties": { + "guestAtBoot": { + "description": "GuestAtBoot specifies with how much memory the VirtualMachine intiallly booted with.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "guestCurrent": { + "description": "GuestCurrent specifies how much memory is currently available for the VirtualMachine.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "guestRequested": { + "description": "GuestRequested specifies how much memory was requested (hotplug) for the VirtualMachine.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + }, "migrationMethod": { "description": "Represents the method using which the vmi can be migrated: live migration or block migration", "type": "string" @@ -25456,6 +27088,10 @@ "description": "Indicates that the migration failed", "type": "boolean" }, + "failureReason": { + "description": "Contains the reason why the migration failed", + "type": "string" + }, "migrationConfiguration": { "description": "Migration configurations to apply", "type": "object", @@ -25539,6 +27175,9 @@ "description": "The source node that the VMI originated on", "type": "string" }, + "sourcePod": { + "type": "string" + }, "startTimestamp": { "description": "The time the migration action began", "type": "string", @@ -25664,6 +27303,17 @@ "target" ], "properties": { + "containerDiskVolume": { + "description": "ContainerDiskVolume shows info about the containerdisk, if the volume is a containerdisk", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the rootdisk or kernel artifacts inside the containerdisk", + "type": "integer", + "format": "int32" + } + } + }, "hotplugVolume": { "description": "If the volume is hotplug, this will contain the hotplug status.", "type": "object", @@ -25890,6 +27540,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -26884,7 +28538,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -26992,6 +28646,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -27033,6 +28691,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -27167,6 +28829,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -27223,7 +28898,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -27239,7 +28914,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -27291,6 +28966,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -27583,6 +29262,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -27601,6 +29290,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -27670,6 +29363,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -27679,6 +29380,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -27720,6 +29425,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -27768,7 +29486,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -28815,6 +30533,34 @@ } } }, + "kernelBootStatus": { + "description": "KernelBootStatus contains info about the kernelBootContainer", + "type": "object", + "properties": { + "initrdInfo": { + "description": "InitrdInfo show info about the initrd file", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the initrd file", + "type": "integer", + "format": "int32" + } + } + }, + "kernelInfo": { + "description": "KernelInfo show info about the kernel image", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the kernel image", + "type": "integer", + "format": "int32" + } + } + } + } + }, "launcherContainerImageVersion": { "description": "LauncherContainerImageVersion indicates what container image is currently active for the vmi.", "type": "string" @@ -28829,6 +30575,51 @@ } } }, + "memory": { + "description": "Memory shows various informations about the VirtualMachine memory.", + "type": "object", + "properties": { + "guestAtBoot": { + "description": "GuestAtBoot specifies with how much memory the VirtualMachine intiallly booted with.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "guestCurrent": { + "description": "GuestCurrent specifies how much memory is currently available for the VirtualMachine.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "guestRequested": { + "description": "GuestRequested specifies how much memory was requested (hotplug) for the VirtualMachine.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + }, "migrationMethod": { "description": "Represents the method using which the vmi can be migrated: live migration or block migration", "type": "string" @@ -28859,6 +30650,10 @@ "description": "Indicates that the migration failed", "type": "boolean" }, + "failureReason": { + "description": "Contains the reason why the migration failed", + "type": "string" + }, "migrationConfiguration": { "description": "Migration configurations to apply", "type": "object", @@ -28942,6 +30737,9 @@ "description": "The source node that the VMI originated on", "type": "string" }, + "sourcePod": { + "type": "string" + }, "startTimestamp": { "description": "The time the migration action began", "type": "string", @@ -29067,6 +30865,17 @@ "target" ], "properties": { + "containerDiskVolume": { + "description": "ContainerDiskVolume shows info about the containerdisk, if the volume is a containerdisk", + "type": "object", + "properties": { + "checksum": { + "description": "Checksum is the checksum of the rootdisk or kernel artifacts inside the containerdisk", + "type": "integer", + "format": "int32" + } + } + }, "hotplugVolume": { "description": "If the volume is hotplug, this will contain the hotplug status.", "type": "object", @@ -29328,13 +31137,8 @@ "name": "io.kubevirt.v1.VirtualMachineInstanceMigration", "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": { "type": "object", @@ -29346,8 +31150,8 @@ } }, "status": { - "description": "VirtualMachineInstanceMigration reprents information pertaining to a VMI's migration.", "type": "object", + "description": "VirtualMachineInstanceMigration reprents information pertaining to a VMI's migration.", "properties": { "conditions": { "type": "array", @@ -29359,10 +31163,14 @@ ], "properties": { "lastProbeTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "lastTransitionTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "message": { "type": "string" @@ -29397,12 +31205,18 @@ }, "endTimestamp": { "description": "The time the migration action ended", - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "failed": { "description": "Indicates that the migration failed", "type": "boolean" }, + "failureReason": { + "description": "Contains the reason why the migration failed", + "type": "string" + }, "migrationConfiguration": { "description": "Migration configurations to apply", "type": "object", @@ -29418,7 +31232,15 @@ "bandwidthPerMigration": { "description": "BandwidthPerMigration limits the amount of network bandwidth live migrations are allowed to use. The value is in quantity per second. Defaults to 0 (no limit)", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "completionTimeoutPerGiB": { "description": "CompletionTimeoutPerGiB is the maximum number of seconds per GiB a migration is allowed to take. If a live-migration takes longer to migrate than this value multiplied by the size of the VMI, the migration will be cancelled, unless AllowPostCopy is true. Defaults to 800", @@ -29478,9 +31300,14 @@ "description": "The source node that the VMI originated on", "type": "string" }, + "sourcePod": { + "type": "string" + }, "startTimestamp": { "description": "The time the migration action began", - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "targetAttachmentPodUID": { "description": "The UID of the target attachment pod for hotplug volumes", @@ -29553,6 +31380,14 @@ "x-kubernetes-list-type": "atomic" } } + }, + "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" } }, "description": "VirtualMachineInstanceMigration represents the object tracking a VMI's migration to another host in the cluster", @@ -29685,6 +31520,10 @@ "description": "Indicates that the migration failed", "type": "boolean" }, + "failureReason": { + "description": "Contains the reason why the migration failed", + "type": "string" + }, "migrationConfiguration": { "description": "Migration configurations to apply", "type": "object", @@ -29768,6 +31607,9 @@ "description": "The source node that the VMI originated on", "type": "string" }, + "sourcePod": { + "type": "string" + }, "startTimestamp": { "description": "The time the migration action began", "type": "string", @@ -29965,6 +31807,10 @@ "description": "Indicates that the migration failed", "type": "boolean" }, + "failureReason": { + "description": "Contains the reason why the migration failed", + "type": "string" + }, "migrationConfiguration": { "description": "Migration configurations to apply", "type": "object", @@ -30048,6 +31894,9 @@ "description": "The source node that the VMI originated on", "type": "string" }, + "sourcePod": { + "type": "string" + }, "startTimestamp": { "description": "The time the migration action began", "type": "string", @@ -30212,17 +32061,12 @@ "name": "io.kubevirt.v1.VirtualMachineInstancePreset", "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": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", "type": "object", + "description": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", "required": [ "selector" ], @@ -30447,7 +32291,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -30555,6 +32399,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -30596,6 +32444,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -30730,6 +32582,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -30786,7 +32651,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -30802,7 +32667,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -30854,6 +32719,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -31146,6 +33015,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -31164,6 +33043,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -31233,6 +33116,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -31242,6 +33133,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -31264,7 +33159,15 @@ "guest": { "description": "Guest allows to specifying the amount of memory which is visible inside the Guest OS. The Guest must lie between Requests and Limits from the resources section. Defaults to the requested memory in the resources section if not specified.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "hugepages": { "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.", @@ -31275,6 +33178,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -31287,7 +33203,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "overcommitGuestOverhead": { @@ -31299,7 +33223,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -31349,6 +33281,14 @@ } } } + }, + "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" } }, "description": "Deprecated for removal in v2, please use VirtualMachineInstanceType and VirtualMachinePreference instead. \n VirtualMachineInstancePreset defines a VMI spec.domain to be applied to all VMIs that match the provided label selector More info: https://kubevirt.io/user-guide/virtual_machines/presets/#overrides", @@ -31631,7 +33571,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -31739,6 +33679,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -31780,6 +33724,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -31914,6 +33862,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -31970,7 +33931,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -31986,7 +33947,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -32038,6 +33999,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -32330,6 +34295,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -32348,6 +34323,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -32417,6 +34396,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -32426,6 +34413,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -32467,6 +34458,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -32811,7 +34815,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -32919,6 +34923,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -32960,6 +34968,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -33094,6 +35106,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -33150,7 +35175,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -33166,7 +35191,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -33218,6 +35243,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -33510,6 +35539,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -33528,6 +35567,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -33597,6 +35640,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -33606,6 +35657,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -33647,6 +35702,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -33791,17 +35859,12 @@ "name": "io.kubevirt.v1.VirtualMachineInstanceReplicaSet", "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": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", "type": "object", + "description": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", "required": [ "selector", "template" @@ -33863,7 +35926,9 @@ "type": "object", "properties": { "metadata": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true }, "spec": { "description": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", @@ -33895,6 +35960,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -34889,7 +36958,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -34997,6 +37066,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -35038,6 +37111,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -35172,6 +37249,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -35228,7 +37318,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -35244,7 +37334,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -35296,6 +37386,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -35588,6 +37682,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -35606,6 +37710,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -35675,6 +37783,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -35684,6 +37800,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -35706,7 +37826,15 @@ "guest": { "description": "Guest allows to specifying the amount of memory which is visible inside the Guest OS. The Guest must lie between Requests and Limits from the resources section. Defaults to the requested memory in the resources section if not specified.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "hugepages": { "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.", @@ -35717,6 +37845,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -35729,7 +37870,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "overcommitGuestOverhead": { @@ -35741,7 +37890,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -35749,7 +37906,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -35821,7 +37978,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -35857,7 +38022,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -35992,7 +38165,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -36028,7 +38209,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -36391,7 +38580,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -36422,7 +38619,15 @@ "capacity": { "description": "Capacity of the sparse disk.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -36460,7 +38665,15 @@ "capacity": { "description": "Capacity of the sparse disk", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "path": { "description": "The path to HostDisk image located on the cluster", @@ -36586,7 +38799,67 @@ } }, "status": { - "description": "Status is the high level overview of how the VirtualMachineInstance is doing. It contains information available to controllers and users." + "type": "object", + "description": "Status is the high level overview of how the VirtualMachineInstance is doing. It contains information available to controllers and users.", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastProbeTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lastTransitionTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "labelSelector": { + "description": "Canonical form of the label selector for HPA which consumes it through the scale subresource.", + "type": "string" + }, + "readyReplicas": { + "description": "The number of ready replicas for this replica set.", + "type": "integer", + "format": "int32" + }, + "replicas": { + "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", + "type": "integer", + "format": "int32" + } + }, + "nullable": true + }, + "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" } }, "description": "VirtualMachineInstance is *the* VirtualMachineInstance Definition. It represents a virtual machine in the runtime environment of kubernetes.", @@ -36744,6 +39017,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -37738,7 +40015,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -37846,6 +40123,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -37887,6 +40168,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -38021,6 +40306,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -38077,7 +40375,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -38093,7 +40391,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -38145,6 +40443,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -38437,6 +40739,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -38455,6 +40767,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -38524,6 +40840,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -38533,6 +40857,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -38574,6 +40902,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -38622,7 +40963,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -39729,6 +42070,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -40723,7 +43068,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -40831,6 +43176,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -40872,6 +43221,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -41006,6 +43359,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -41062,7 +43428,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -41078,7 +43444,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -41130,6 +43496,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -41422,6 +43792,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -41440,6 +43820,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -41509,6 +43893,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -41518,6 +43910,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -41559,6 +43955,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -41607,7 +44016,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -42500,12 +44909,1055 @@ } }, "status": { - "description": "Status is the high level overview of how the VirtualMachineInstance is doing. It contains information available to controllers and users.", + "description": "Status is the high level overview of how the VirtualMachineInstance is doing. It contains information available to controllers and users.", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastProbeTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lastTransitionTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }, + "labelSelector": { + "description": "Canonical form of the label selector for HPA which consumes it through the scale subresource.", + "type": "string" + }, + "readyReplicas": { + "description": "The number of ready replicas for this replica set.", + "type": "integer", + "format": "int32" + }, + "replicas": { + "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", + "type": "integer", + "format": "int32" + } + }, + "nullable": true + } + } + } + }, + "subresources": { + "status": {}, + "scale": { + "specReplicasPath": ".spec.replicas", + "statusReplicasPath": ".status.replicas", + "labelSelectorPath": ".status.labelSelector" + } + }, + "additionalPrinterColumns": [ + { + "name": "Desired", + "type": "integer", + "description": "Number of desired VirtualMachineInstances", + "jsonPath": ".spec.replicas" + }, + { + "name": "Current", + "type": "integer", + "description": "Number of managed and not final or deleted VirtualMachineInstances", + "jsonPath": ".status.replicas" + }, + { + "name": "Ready", + "type": "integer", + "description": "Number of managed VirtualMachineInstances which are ready to receive traffic", + "jsonPath": ".status.readyReplicas" + }, + { + "name": "Age", + "type": "date", + "jsonPath": ".metadata.creationTimestamp" + } + ] + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "virtualmachineinstancereplicasets", + "singular": "virtualmachineinstancereplicaset", + "shortNames": [ + "vmirs", + "vmirss" + ], + "kind": "VirtualMachineInstanceReplicaSet", + "listKind": "VirtualMachineInstanceReplicaSetList", + "categories": [ + "all" + ] + }, + "storedVersions": [ + "v1" + ] + } + }, + "additionalColumns": [ + { + "name": "Desired", + "type": "integer", + "description": "Number of desired VirtualMachineInstances", + "jsonPath": ".spec.replicas" + }, + { + "name": "Current", + "type": "integer", + "description": "Number of managed and not final or deleted VirtualMachineInstances", + "jsonPath": ".status.replicas" + }, + { + "name": "Ready", + "type": "integer", + "description": "Number of managed VirtualMachineInstances which are ready to receive traffic", + "jsonPath": ".status.readyReplicas" + }, + { + "name": "Age", + "type": "date", + "jsonPath": ".metadata.creationTimestamp" + } + ], + "short": "VirtualMachineInstanceReplicaSet", + "apiGroup": "kubevirt.io", + "apiKind": "VirtualMachineInstanceReplicaSet", + "apiVersion": "v1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kubevirt", + "sub": "kubevirt", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "io.kubevirt.clone.v1alpha1.VirtualMachineClone", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "required": [ + "source" + ], + "properties": { + "annotationFilters": { + "description": "Example use: \"!some/key*\". For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "labelFilters": { + "description": "Example use: \"!some/key*\". For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "newMacAddresses": { + "description": "NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "newSMBiosSerial": { + "description": "NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.", + "type": "string" + }, + "source": { + "description": "Source is the object that would be cloned. Currently supported source types are: VirtualMachine of kubevirt.io API group, VirtualMachineSnapshot of snapshot.kubevirt.io API group", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "target": { + "description": "Target is the outcome of the cloning process. Currently supported source types are: - VirtualMachine of kubevirt.io API group - Empty (nil). If the target is not provided, the target type would default to VirtualMachine and a random name would be generated for the target. The target's name can be viewed by inspecting status \"TargetName\" field below.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "template": { + "description": "For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "object", + "properties": { + "annotationFilters": { + "description": "Example use: \"!some/key*\". For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "labelFilters": { + "description": "Example use: \"!some/key*\". For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + } + }, + "status": { + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastProbeTime": { + "format": "date-time", + "type": "string", + "nullable": true + }, + "lastTransitionTime": { + "format": "date-time", + "type": "string", + "nullable": true + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "description": "ConditionType is the const type for Conditions", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "creationTime": { + "format": "date-time", + "type": "string", + "nullable": true + }, + "phase": { + "type": "string" + }, + "restoreName": { + "type": "string", + "nullable": true + }, + "snapshotName": { + "type": "string", + "nullable": true + }, + "targetName": { + "type": "string", + "nullable": true + } + } + }, + "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" + } + }, + "description": "VirtualMachineClone is a CRD that clones one VM into another.", + "type": "object", + "required": [ + "spec" + ], + "x-kubernetes-group-version-kind": [ + { + "group": "clone.kubevirt.io", + "kind": "VirtualMachineClone", + "version": "v1alpha1" + } + ] + }, + "crd": { + "metadata": { + "name": "virtualmachineclones.clone.kubevirt.io" + }, + "spec": { + "group": "clone.kubevirt.io", + "names": { + "plural": "virtualmachineclones", + "singular": "virtualmachineclone", + "shortNames": [ + "vmclone", + "vmclones" + ], + "kind": "VirtualMachineClone", + "listKind": "VirtualMachineCloneList", + "categories": [ + "all" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1alpha1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "VirtualMachineClone is a CRD that clones one VM into another.", + "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" + }, + "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": { + "type": "object", + "required": [ + "source" + ], + "properties": { + "annotationFilters": { + "description": "Example use: \"!some/key*\". For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "labelFilters": { + "description": "Example use: \"!some/key*\". For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "newMacAddresses": { + "description": "NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "newSMBiosSerial": { + "description": "NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.", + "type": "string" + }, + "source": { + "description": "Source is the object that would be cloned. Currently supported source types are: VirtualMachine of kubevirt.io API group, VirtualMachineSnapshot of snapshot.kubevirt.io API group", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "target": { + "description": "Target is the outcome of the cloning process. Currently supported source types are: - VirtualMachine of kubevirt.io API group - Empty (nil). If the target is not provided, the target type would default to VirtualMachine and a random name would be generated for the target. The target's name can be viewed by inspecting status \"TargetName\" field below.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "template": { + "description": "For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "object", + "properties": { + "annotationFilters": { + "description": "Example use: \"!some/key*\". For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + }, + "labelFilters": { + "description": "Example use: \"!some/key*\". For a detailed description, please refer to https://kubevirt.io/user-guide/operations/clone_api/#label-annotation-filters.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + } + }, + "status": { + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastProbeTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "lastTransitionTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "description": "ConditionType is the const type for Conditions", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "creationTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "phase": { + "type": "string" + }, + "restoreName": { + "type": "string", + "nullable": true + }, + "snapshotName": { + "type": "string", + "nullable": true + }, + "targetName": { + "type": "string", + "nullable": true + } + } + } + } + } + }, + "subresources": { + "status": {} + }, + "additionalPrinterColumns": [ + { + "name": "Phase", + "type": "string", + "jsonPath": ".status.phase" + }, + { + "name": "SourceVirtualMachine", + "type": "string", + "jsonPath": ".spec.source.name" + }, + { + "name": "TargetVirtualMachine", + "type": "string", + "jsonPath": ".spec.target.name" + } + ] + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "virtualmachineclones", + "singular": "virtualmachineclone", + "shortNames": [ + "vmclone", + "vmclones" + ], + "kind": "VirtualMachineClone", + "listKind": "VirtualMachineCloneList", + "categories": [ + "all" + ] + }, + "storedVersions": [ + "v1alpha1" + ] + } + }, + "additionalColumns": [ + { + "name": "Phase", + "type": "string", + "jsonPath": ".status.phase" + }, + { + "name": "SourceVirtualMachine", + "type": "string", + "jsonPath": ".spec.source.name" + }, + { + "name": "TargetVirtualMachine", + "type": "string", + "jsonPath": ".spec.target.name" + } + ], + "short": "VirtualMachineClone", + "apiGroup": "clone.kubevirt.io", + "apiKind": "VirtualMachineClone", + "apiVersion": "v1alpha1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kubevirt", + "sub": "kubevirt", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "io.kubevirt.export.v1alpha1.VirtualMachineExport", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "description": "VirtualMachineExportSpec is the spec for a VirtualMachineExport resource", + "required": [ + "source" + ], + "properties": { + "source": { + "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "tokenSecretRef": { + "description": "TokenSecretRef is the name of the custom-defined secret that contains the token used by the export server pod", + "type": "string" + }, + "ttlDuration": { + "description": "ttlDuration limits the lifetime of an export If this field is set, after this duration has passed from counting from CreationTimestamp, the export is eligible to be automatically deleted. If this field is omitted, a reasonable default is applied.", + "type": "string" + } + } + }, + "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" + }, + "status": { + "description": "VirtualMachineExportStatus is the status for a VirtualMachineExport resource", + "type": "object", + "properties": { + "conditions": { + "type": "array", + "items": { + "description": "Condition defines conditions", + "type": "object", + "required": [ + "status", + "type" + ], + "properties": { + "lastProbeTime": { + "format": "date-time", + "type": "string", + "nullable": true + }, + "lastTransitionTime": { + "format": "date-time", + "type": "string", + "nullable": true + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "description": "ConditionType is the const type for Conditions", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "links": { + "description": "VirtualMachineExportLinks contains the links that point the exported VM resources", + "type": "object", + "properties": { + "external": { + "description": "VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes", + "type": "object", + "required": [ + "cert" + ], + "properties": { + "cert": { + "description": "Cert is the public CA certificate base64 encoded", + "type": "string" + }, + "manifests": { + "description": "Manifests is a list of available manifests for the export", + "type": "array", + "items": { + "description": "VirtualMachineExportManifest contains the type and URL of the exported manifest", + "type": "object", + "required": [ + "type", + "url" + ], + "properties": { + "type": { + "description": "Type is the type of manifest returned", + "type": "string" + }, + "url": { + "description": "Url is the url of the endpoint that returns the manifest", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "type" + ], + "x-kubernetes-list-type": "map" + }, + "volumes": { + "description": "Volumes is a list of available volumes to export", + "type": "array", + "items": { + "description": "VirtualMachineExportVolume contains the name and available formats for the exported volume", + "type": "object", + "required": [ + "name" + ], + "properties": { + "formats": { + "type": "array", + "items": { + "description": "VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format", + "type": "object", + "required": [ + "format", + "url" + ], + "properties": { + "format": { + "description": "Format is the format of the image at the specified URL", + "type": "string" + }, + "url": { + "description": "Url is the url that contains the volume in the format specified", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "format" + ], + "x-kubernetes-list-type": "map" + }, + "name": { + "description": "Name is the name of the exported volume", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + } + } + }, + "internal": { + "description": "VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes", + "type": "object", + "required": [ + "cert" + ], + "properties": { + "cert": { + "description": "Cert is the public CA certificate base64 encoded", + "type": "string" + }, + "manifests": { + "description": "Manifests is a list of available manifests for the export", + "type": "array", + "items": { + "description": "VirtualMachineExportManifest contains the type and URL of the exported manifest", + "type": "object", + "required": [ + "type", + "url" + ], + "properties": { + "type": { + "description": "Type is the type of manifest returned", + "type": "string" + }, + "url": { + "description": "Url is the url of the endpoint that returns the manifest", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "type" + ], + "x-kubernetes-list-type": "map" + }, + "volumes": { + "description": "Volumes is a list of available volumes to export", + "type": "array", + "items": { + "description": "VirtualMachineExportVolume contains the name and available formats for the exported volume", + "type": "object", + "required": [ + "name" + ], + "properties": { + "formats": { + "type": "array", + "items": { + "description": "VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format", + "type": "object", + "required": [ + "format", + "url" + ], + "properties": { + "format": { + "description": "Format is the format of the image at the specified URL", + "type": "string" + }, + "url": { + "description": "Url is the url that contains the volume in the format specified", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "format" + ], + "x-kubernetes-list-type": "map" + }, + "name": { + "description": "Name is the name of the exported volume", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + } + } + } + } + }, + "phase": { + "description": "VirtualMachineExportPhase is the current phase of the VirtualMachineExport", + "type": "string" + }, + "serviceName": { + "description": "ServiceName is the name of the service created associated with the Virtual Machine export. It will be used to create the internal URLs for downloading the images", + "type": "string" + }, + "tokenSecretRef": { + "description": "TokenSecretRef is the name of the secret that contains the token used by the export server pod", + "type": "string" + }, + "ttlExpirationTime": { + "description": "The time at which the VM Export will be completely removed according to specified TTL Formula is CreationTimestamp + TTL", + "type": "string", + "format": "date-time" + }, + "virtualMachineName": { + "description": "VirtualMachineName shows the name of the source virtual machine if the source is either a VirtualMachine or a VirtualMachineSnapshot. This is mainly to easily identify the source VirtualMachine in case of a VirtualMachineSnapshot", + "type": "string" + } + } + } + }, + "description": "VirtualMachineExport defines the operation of exporting a VM source", + "type": "object", + "required": [ + "spec" + ], + "x-kubernetes-group-version-kind": [ + { + "group": "export.kubevirt.io", + "kind": "VirtualMachineExport", + "version": "v1alpha1" + } + ] + }, + "crd": { + "metadata": { + "name": "virtualmachineexports.export.kubevirt.io" + }, + "spec": { + "group": "export.kubevirt.io", + "names": { + "plural": "virtualmachineexports", + "singular": "virtualmachineexport", + "shortNames": [ + "vmexport", + "vmexports" + ], + "kind": "VirtualMachineExport", + "listKind": "VirtualMachineExportList", + "categories": [ + "all" + ] + }, + "scope": "Namespaced", + "versions": [ + { + "name": "v1alpha1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "description": "VirtualMachineExport defines the operation of exporting a VM source", + "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" + }, + "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": "VirtualMachineExportSpec is the spec for a VirtualMachineExport resource", + "type": "object", + "required": [ + "source" + ], + "properties": { + "source": { + "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "tokenSecretRef": { + "description": "TokenSecretRef is the name of the custom-defined secret that contains the token used by the export server pod", + "type": "string" + }, + "ttlDuration": { + "description": "ttlDuration limits the lifetime of an export If this field is set, after this duration has passed from counting from CreationTimestamp, the export is eligible to be automatically deleted. If this field is omitted, a reasonable default is applied.", + "type": "string" + } + } + }, + "status": { + "description": "VirtualMachineExportStatus is the status for a VirtualMachineExport resource", "type": "object", "properties": { "conditions": { "type": "array", "items": { + "description": "Condition defines conditions", "type": "object", "required": [ "status", @@ -42532,62 +45984,230 @@ "type": "string" }, "type": { + "description": "ConditionType is the const type for Conditions", "type": "string" } } + }, + "x-kubernetes-list-type": "atomic" + }, + "links": { + "description": "VirtualMachineExportLinks contains the links that point the exported VM resources", + "type": "object", + "properties": { + "external": { + "description": "VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes", + "type": "object", + "required": [ + "cert" + ], + "properties": { + "cert": { + "description": "Cert is the public CA certificate base64 encoded", + "type": "string" + }, + "manifests": { + "description": "Manifests is a list of available manifests for the export", + "type": "array", + "items": { + "description": "VirtualMachineExportManifest contains the type and URL of the exported manifest", + "type": "object", + "required": [ + "type", + "url" + ], + "properties": { + "type": { + "description": "Type is the type of manifest returned", + "type": "string" + }, + "url": { + "description": "Url is the url of the endpoint that returns the manifest", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "type" + ], + "x-kubernetes-list-type": "map" + }, + "volumes": { + "description": "Volumes is a list of available volumes to export", + "type": "array", + "items": { + "description": "VirtualMachineExportVolume contains the name and available formats for the exported volume", + "type": "object", + "required": [ + "name" + ], + "properties": { + "formats": { + "type": "array", + "items": { + "description": "VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format", + "type": "object", + "required": [ + "format", + "url" + ], + "properties": { + "format": { + "description": "Format is the format of the image at the specified URL", + "type": "string" + }, + "url": { + "description": "Url is the url that contains the volume in the format specified", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "format" + ], + "x-kubernetes-list-type": "map" + }, + "name": { + "description": "Name is the name of the exported volume", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + } + } + }, + "internal": { + "description": "VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes", + "type": "object", + "required": [ + "cert" + ], + "properties": { + "cert": { + "description": "Cert is the public CA certificate base64 encoded", + "type": "string" + }, + "manifests": { + "description": "Manifests is a list of available manifests for the export", + "type": "array", + "items": { + "description": "VirtualMachineExportManifest contains the type and URL of the exported manifest", + "type": "object", + "required": [ + "type", + "url" + ], + "properties": { + "type": { + "description": "Type is the type of manifest returned", + "type": "string" + }, + "url": { + "description": "Url is the url of the endpoint that returns the manifest", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "type" + ], + "x-kubernetes-list-type": "map" + }, + "volumes": { + "description": "Volumes is a list of available volumes to export", + "type": "array", + "items": { + "description": "VirtualMachineExportVolume contains the name and available formats for the exported volume", + "type": "object", + "required": [ + "name" + ], + "properties": { + "formats": { + "type": "array", + "items": { + "description": "VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format", + "type": "object", + "required": [ + "format", + "url" + ], + "properties": { + "format": { + "description": "Format is the format of the image at the specified URL", + "type": "string" + }, + "url": { + "description": "Url is the url that contains the volume in the format specified", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "format" + ], + "x-kubernetes-list-type": "map" + }, + "name": { + "description": "Name is the name of the exported volume", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + } + } + } } }, - "labelSelector": { - "description": "Canonical form of the label selector for HPA which consumes it through the scale subresource.", + "phase": { + "description": "VirtualMachineExportPhase is the current phase of the VirtualMachineExport", "type": "string" }, - "readyReplicas": { - "description": "The number of ready replicas for this replica set.", - "type": "integer", - "format": "int32" + "serviceName": { + "description": "ServiceName is the name of the service created associated with the Virtual Machine export. It will be used to create the internal URLs for downloading the images", + "type": "string" }, - "replicas": { - "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", - "type": "integer", - "format": "int32" + "tokenSecretRef": { + "description": "TokenSecretRef is the name of the secret that contains the token used by the export server pod", + "type": "string" + }, + "ttlExpirationTime": { + "description": "The time at which the VM Export will be completely removed according to specified TTL Formula is CreationTimestamp + TTL", + "type": "string", + "format": "date-time" + }, + "virtualMachineName": { + "description": "VirtualMachineName shows the name of the source virtual machine if the source is either a VirtualMachine or a VirtualMachineSnapshot. This is mainly to easily identify the source VirtualMachine in case of a VirtualMachineSnapshot", + "type": "string" } - }, - "nullable": true + } } } } }, - "subresources": { - "status": {}, - "scale": { - "specReplicasPath": ".spec.replicas", - "statusReplicasPath": ".status.replicas", - "labelSelectorPath": ".status.labelSelector" - } - }, "additionalPrinterColumns": [ { - "name": "Desired", - "type": "integer", - "description": "Number of desired VirtualMachineInstances", - "jsonPath": ".spec.replicas" - }, - { - "name": "Current", - "type": "integer", - "description": "Number of managed and not final or deleted VirtualMachineInstances", - "jsonPath": ".status.replicas" + "name": "SourceKind", + "type": "string", + "jsonPath": ".spec.source.kind" }, { - "name": "Ready", - "type": "integer", - "description": "Number of managed VirtualMachineInstances which are ready to receive traffic", - "jsonPath": ".status.readyReplicas" + "name": "SourceName", + "type": "string", + "jsonPath": ".spec.source.name" }, { - "name": "Age", - "type": "date", - "jsonPath": ".metadata.creationTimestamp" + "name": "Phase", + "type": "string", + "jsonPath": ".status.phase" } ] } @@ -42597,52 +46217,44 @@ "status": { "conditions": [], "acceptedNames": { - "plural": "virtualmachineinstancereplicasets", - "singular": "virtualmachineinstancereplicaset", + "plural": "virtualmachineexports", + "singular": "virtualmachineexport", "shortNames": [ - "vmirs", - "vmirss" + "vmexport", + "vmexports" ], - "kind": "VirtualMachineInstanceReplicaSet", - "listKind": "VirtualMachineInstanceReplicaSetList", + "kind": "VirtualMachineExport", + "listKind": "VirtualMachineExportList", "categories": [ "all" ] }, "storedVersions": [ - "v1" + "v1alpha1" ] } }, "additionalColumns": [ { - "name": "Desired", - "type": "integer", - "description": "Number of desired VirtualMachineInstances", - "jsonPath": ".spec.replicas" - }, - { - "name": "Current", - "type": "integer", - "description": "Number of managed and not final or deleted VirtualMachineInstances", - "jsonPath": ".status.replicas" + "name": "SourceKind", + "type": "string", + "jsonPath": ".spec.source.kind" }, { - "name": "Ready", - "type": "integer", - "description": "Number of managed VirtualMachineInstances which are ready to receive traffic", - "jsonPath": ".status.readyReplicas" + "name": "SourceName", + "type": "string", + "jsonPath": ".spec.source.name" }, { - "name": "Age", - "type": "date", - "jsonPath": ".metadata.creationTimestamp" + "name": "Phase", + "type": "string", + "jsonPath": ".status.phase" } ], - "short": "VirtualMachineInstanceReplicaSet", - "apiGroup": "kubevirt.io", - "apiKind": "VirtualMachineInstanceReplicaSet", - "apiVersion": "v1", + "short": "VirtualMachineExport", + "apiGroup": "export.kubevirt.io", + "apiKind": "VirtualMachineExport", + "apiVersion": "v1alpha1", "readProperties": { "spec": "spec", "status": "status" @@ -42664,183 +46276,287 @@ }, { "alternatives": [], - "name": "io.kubevirt.clone.v1alpha1.VirtualMachineClone", + "name": "io.kubevirt.instancetype.v1beta1.VirtualMachineClusterInstancetype", "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": { "type": "object", + "description": "Required spec describing the instancetype", "required": [ - "source" + "cpu", + "memory" ], "properties": { - "annotationFilters": { + "annotations": { + "description": "Optionally defines the required Annotations to be used by the instance type and applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "cpu": { + "description": "Required CPU related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "dedicatedCPUPlacement": { + "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", + "type": "boolean" + }, + "guest": { + "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", + "type": "integer", + "format": "int32" + }, + "isolateEmulatorThread": { + "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "type": "boolean" + }, + "model": { + "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", + "type": "string" + }, + "numa": { + "description": "NUMA allows specifying settings for the guest NUMA topology", + "type": "object", + "properties": { + "guestMappingPassthrough": { + "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", + "type": "object" + } + } + }, + "realtime": { + "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "type": "object", + "properties": { + "mask": { + "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "type": "string" + } + } + } + } + }, + "gpus": { + "description": "Optionally defines any GPU devices associated with the instancetype.", "type": "array", "items": { - "type": "string" + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "type": "string" + }, + "name": { + "description": "Name of the GPU device as exposed by a device plugin", + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + }, + "virtualGPUOptions": { + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, - "labelFilters": { + "hostDevices": { + "description": "Optionally defines any HostDevices associated with the instancetype.", "type": "array", "items": { - "type": "string" + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", + "type": "string" + }, + "name": { + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + } + } }, "x-kubernetes-list-type": "atomic" }, - "newMacAddresses": { - "description": "NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "newSMBiosSerial": { - "description": "NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.", + "ioThreadsPolicy": { + "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", "type": "string" }, - "source": { - "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", + "launchSecurity": { + "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", "type": "object", - "required": [ - "kind", - "name" - ], "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" - }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" - }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" + "sev": { + "description": "AMD Secure Encrypted Virtualization (SEV).", + "type": "object", + "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, + "policy": { + "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + "type": "object", + "properties": { + "encryptedState": { + "description": "SEV-ES is required. Defaults to false.", + "type": "boolean" + } + } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" + } + } } } }, - "target": { - "description": "If the target is not provided, a random name would be generated for the target. The target's name can be viewed by inspecting status \"TargetName\" field below.", + "memory": { + "description": "Required Memory related attributes of the instancetype.", "type": "object", "required": [ - "kind", - "name" + "guest" ], "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" + "guest": { + "description": "Required amount of memory which is visible inside the guest OS.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" + "hugepages": { + "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", + "type": "object", + "properties": { + "pageSize": { + "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", + "type": "string" + } + } }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" + "overcommitPercent": { + "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", + "type": "integer", + "maximum": 100, + "minimum": 0 } } - } - } - }, - "status": { - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", - "type": "object", - "required": [ - "status", - "type" - ], - "properties": { - "lastProbeTime": { - "format": "date-time" - }, - "lastTransitionTime": { - "format": "date-time" - }, - "message": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "description": "ConditionType is the const type for Conditions", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" }, - "creationTime": { - "format": "date-time" + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ \n NodeSelector is the name of the custom node selector for the instancetype.", + "type": "object", + "additionalProperties": { + "type": "string" + } }, - "phase": { + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler. \n SchedulerName is the name of the custom K8s scheduler for the instancetype.", "type": "string" - }, - "restoreName": {}, - "snapshotName": {}, - "targetName": {} + } } + }, + "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" } }, - "description": "VirtualMachineClone is a CRD that clones one VM into another.", + "description": "VirtualMachineClusterInstancetype is a cluster scoped version of VirtualMachineInstancetype resource.", "type": "object", "required": [ "spec" ], "x-kubernetes-group-version-kind": [ { - "group": "clone.kubevirt.io", - "kind": "VirtualMachineClone", - "version": "v1alpha1" + "group": "instancetype.kubevirt.io", + "kind": "VirtualMachineClusterInstancetype", + "version": "v1beta1" } ] }, "crd": { "metadata": { - "name": "virtualmachineclones.clone.kubevirt.io" + "name": "virtualmachineclusterinstancetypes.instancetype.kubevirt.io" }, "spec": { - "group": "clone.kubevirt.io", + "group": "instancetype.kubevirt.io", "names": { - "plural": "virtualmachineclones", - "singular": "virtualmachineclone", + "plural": "virtualmachineclusterinstancetypes", + "singular": "virtualmachineclusterinstancetype", "shortNames": [ - "vmclone", - "vmclones" + "vmclusterinstancetype", + "vmclusterinstancetypes", + "vmcf", + "vmcfs" ], - "kind": "VirtualMachineClone", - "listKind": "VirtualMachineCloneList", - "categories": [ - "all" - ] + "kind": "VirtualMachineClusterInstancetype", + "listKind": "VirtualMachineClusterInstancetypeList" }, - "scope": "Namespaced", + "scope": "Cluster", "versions": [ { "name": "v1alpha1", "served": true, - "storage": true, + "storage": false, + "deprecated": true, + "deprecationWarning": "instancetype.kubevirt.io/v1alpha1 VirtualMachineClusterInstanceTypes is now deprecated and will be removed in v1.", "schema": { "openAPIV3Schema": { - "description": "VirtualMachineClone is a CRD that clones one VM into another.", + "description": "VirtualMachineClusterInstancetype is a cluster scoped version of VirtualMachineInstancetype resource.", "type": "object", "required": [ "spec" @@ -42858,561 +46574,493 @@ "type": "object" }, "spec": { + "description": "Required spec describing the instancetype", "type": "object", "required": [ - "source" + "cpu", + "memory" ], "properties": { - "annotationFilters": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "labelFilters": { - "type": "array", - "items": { - "type": "string" - }, - "x-kubernetes-list-type": "atomic" - }, - "newMacAddresses": { - "description": "NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map.", + "annotations": { + "description": "Optionally defines the required Annotations to be used by the instance type and applied to the VirtualMachineInstance", "type": "object", "additionalProperties": { "type": "string" } }, - "newSMBiosSerial": { - "description": "NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.", - "type": "string" - }, - "source": { - "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", + "cpu": { + "description": "Required CPU related attributes of the instancetype.", "type": "object", "required": [ - "kind", - "name" + "guest" ], "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" + "dedicatedCPUPlacement": { + "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", + "type": "boolean" }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" + "guest": { + "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", + "type": "integer", + "format": "int32" }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" - } - } - }, - "target": { - "description": "If the target is not provided, a random name would be generated for the target. The target's name can be viewed by inspecting status \"TargetName\" field below.", - "type": "object", - "required": [ - "kind", - "name" - ], - "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" + "isolateEmulatorThread": { + "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "type": "boolean" }, - "kind": { - "description": "Kind is the type of resource being referenced", + "model": { + "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", "type": "string" }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" + "numa": { + "description": "NUMA allows specifying settings for the guest NUMA topology", + "type": "object", + "properties": { + "guestMappingPassthrough": { + "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", + "type": "object" + } + } + }, + "realtime": { + "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "type": "object", + "properties": { + "mask": { + "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "type": "string" + } + } } } - } - } - }, - "status": { - "type": "object", - "properties": { - "conditions": { + }, + "gpus": { + "description": "Optionally defines any GPU devices associated with the instancetype.", "type": "array", "items": { - "description": "Condition defines conditions", "type": "object", "required": [ - "status", - "type" + "deviceName", + "name" ], "properties": { - "lastProbeTime": { - "type": "string", - "format": "date-time", - "nullable": true + "deviceName": { + "type": "string" }, - "lastTransitionTime": { - "type": "string", - "format": "date-time", - "nullable": true + "name": { + "description": "Name of the GPU device as exposed by a device plugin", + "type": "string" }, - "message": { + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", "type": "string" }, - "reason": { + "virtualGPUOptions": { + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "hostDevices": { + "description": "Optionally defines any HostDevices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", "type": "string" }, - "status": { + "name": { "type": "string" }, - "type": { - "description": "ConditionType is the const type for Conditions", + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", "type": "string" } } }, "x-kubernetes-list-type": "atomic" }, - "creationTime": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "phase": { + "ioThreadsPolicy": { + "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", "type": "string" }, - "restoreName": { - "type": "string", - "nullable": true + "launchSecurity": { + "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", + "type": "object", + "properties": { + "sev": { + "description": "AMD Secure Encrypted Virtualization (SEV).", + "type": "object", + "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, + "policy": { + "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + "type": "object", + "properties": { + "encryptedState": { + "description": "SEV-ES is required. Defaults to false.", + "type": "boolean" + } + } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" + } + } + } + } }, - "snapshotName": { - "type": "string", - "nullable": true + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Required amount of memory which is visible inside the guest OS.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "hugepages": { + "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", + "type": "object", + "properties": { + "pageSize": { + "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", + "type": "string" + } + } + }, + "overcommitPercent": { + "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", + "type": "integer", + "maximum": 100, + "minimum": 0 + } + } }, - "targetName": { - "type": "string", - "nullable": true + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ \n NodeSelector is the name of the custom node selector for the instancetype.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler. \n SchedulerName is the name of the custom K8s scheduler for the instancetype.", + "type": "string" } } } } } - }, - "subresources": { - "status": {} - }, - "additionalPrinterColumns": [ - { - "name": "Phase", - "type": "string", - "jsonPath": ".status.phase" - }, - { - "name": "SourceVirtualMachine", - "type": "string", - "jsonPath": ".spec.source.name" - }, - { - "name": "TargetVirtualMachine", - "type": "string", - "jsonPath": ".spec.target.name" - } - ] - } - ], - "conversion": {} - }, - "status": { - "conditions": [], - "acceptedNames": { - "plural": "virtualmachineclones", - "singular": "virtualmachineclone", - "shortNames": [ - "vmclone", - "vmclones" - ], - "kind": "VirtualMachineClone", - "listKind": "VirtualMachineCloneList", - "categories": [ - "all" - ] - }, - "storedVersions": [ - "v1alpha1" - ] - } - }, - "additionalColumns": [ - { - "name": "Phase", - "type": "string", - "jsonPath": ".status.phase" - }, - { - "name": "SourceVirtualMachine", - "type": "string", - "jsonPath": ".spec.source.name" - }, - { - "name": "TargetVirtualMachine", - "type": "string", - "jsonPath": ".spec.target.name" - } - ], - "short": "VirtualMachineClone", - "apiGroup": "clone.kubevirt.io", - "apiKind": "VirtualMachineClone", - "apiVersion": "v1alpha1", - "readProperties": { - "spec": "spec", - "status": "status" - }, - "writeProperties": { - "spec": "spec" - }, - "group": "kubevirt", - "sub": "kubevirt", - "listExcludes": [], - "readExcludes": [], - "simpleExcludes": [], - "gqlDefs": { - "metadata": "metadata!", - "spec": "JSONObject", - "status": "JSONObject" - }, - "namespaced": true - }, - { - "alternatives": [], - "name": "io.kubevirt.export.v1alpha1.VirtualMachineExport", - "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" - }, - "spec": { - "description": "VirtualMachineExportSpec is the spec for a VirtualMachineExport resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "source": { - "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", - "type": "object", - "required": [ - "kind", - "name" - ], - "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" - }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" - }, - "name": { - "description": "Name is the name of resource being referenced", - "type": "string" - } - } - }, - "tokenSecretRef": { - "description": "TokenSecretRef is the name of the custom-defined secret that contains the token used by the export server pod", - "type": "string" - }, - "ttlDuration": { - "description": "ttlDuration limits the lifetime of an export If this field is set, after this duration has passed from counting from CreationTimestamp, the export is eligible to be automatically deleted. If this field is omitted, a reasonable default is applied.", - "type": "string" } - } - }, - "status": { - "description": "VirtualMachineExportStatus is the status for a VirtualMachineExport resource", - "type": "object", - "properties": { - "conditions": { - "type": "array", - "items": { - "description": "Condition defines conditions", + }, + { + "name": "v1alpha2", + "served": true, + "storage": false, + "deprecated": true, + "deprecationWarning": "instancetype.kubevirt.io/v1alpha2 VirtualMachineClusterInstanceTypes is now deprecated and will be removed in v1.", + "schema": { + "openAPIV3Schema": { + "description": "VirtualMachineClusterInstancetype is a cluster scoped version of VirtualMachineInstancetype resource.", "type": "object", "required": [ - "status", - "type" + "spec" ], "properties": { - "lastProbeTime": { - "format": "date-time" - }, - "lastTransitionTime": { - "format": "date-time" - }, - "message": { + "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" }, - "reason": { + "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" }, - "status": { - "type": "string" + "metadata": { + "type": "object" }, - "type": { - "description": "ConditionType is the const type for Conditions", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "links": { - "description": "VirtualMachineExportLinks contains the links that point the exported VM resources", - "type": "object", - "properties": { - "external": { - "description": "VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes", - "type": "object", - "required": [ - "cert" - ], - "properties": { - "cert": { - "description": "Cert is the public CA certificate base64 encoded", - "type": "string" - }, - "manifests": { - "description": "Manifests is a list of available manifests for the export", - "type": "array", - "items": { - "description": "VirtualMachineExportManifest contains the type and URL of the exported manifest", + "spec": { + "description": "Required spec describing the instancetype", + "type": "object", + "required": [ + "cpu", + "memory" + ], + "properties": { + "annotations": { + "description": "Optionally defines the required Annotations to be used by the instance type and applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "cpu": { + "description": "Required CPU related attributes of the instancetype.", "type": "object", "required": [ - "type", - "url" + "guest" ], "properties": { - "type": { - "description": "Type is the type of manifest returned", - "type": "string" + "dedicatedCPUPlacement": { + "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", + "type": "boolean" }, - "url": { - "description": "Url is the url of the endpoint that returns the manifest", + "guest": { + "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", + "type": "integer", + "format": "int32" + }, + "isolateEmulatorThread": { + "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "type": "boolean" + }, + "model": { + "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", "type": "string" + }, + "numa": { + "description": "NUMA allows specifying settings for the guest NUMA topology", + "type": "object", + "properties": { + "guestMappingPassthrough": { + "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", + "type": "object" + } + } + }, + "realtime": { + "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "type": "object", + "properties": { + "mask": { + "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "type": "string" + } + } } } }, - "x-kubernetes-list-map-keys": [ - "type" - ], - "x-kubernetes-list-type": "map" - }, - "volumes": { - "description": "Volumes is a list of available volumes to export", - "type": "array", - "items": { - "description": "VirtualMachineExportVolume contains the name and available formats for the exported volume", - "type": "object", - "required": [ - "name" - ], - "properties": { - "formats": { - "type": "array", - "items": { - "description": "VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format", + "gpus": { + "description": "Optionally defines any GPU devices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "type": "string" + }, + "name": { + "description": "Name of the GPU device as exposed by a device plugin", + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + }, + "virtualGPUOptions": { "type": "object", - "required": [ - "format", - "url" - ], "properties": { - "format": { - "description": "Format is the format of the image at the specified URL", - "type": "string" - }, - "url": { - "description": "Url is the url that contains the volume in the format specified", - "type": "string" + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } } } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "hostDevices": { + "description": "Optionally defines any HostDevices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", + "type": "string" }, - "x-kubernetes-list-map-keys": [ - "format" - ], - "x-kubernetes-list-type": "map" - }, - "name": { - "description": "Name is the name of the exported volume", - "type": "string" + "name": { + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + } } - } + }, + "x-kubernetes-list-type": "atomic" }, - "x-kubernetes-list-map-keys": [ - "name" - ], - "x-kubernetes-list-type": "map" - } - } - }, - "internal": { - "description": "VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes", - "type": "object", - "required": [ - "cert" - ], - "properties": { - "cert": { - "description": "Cert is the public CA certificate base64 encoded", - "type": "string" - }, - "manifests": { - "description": "Manifests is a list of available manifests for the export", - "type": "array", - "items": { - "description": "VirtualMachineExportManifest contains the type and URL of the exported manifest", + "ioThreadsPolicy": { + "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", + "type": "string" + }, + "launchSecurity": { + "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", "type": "object", - "required": [ - "type", - "url" - ], "properties": { - "type": { - "description": "Type is the type of manifest returned", - "type": "string" - }, - "url": { - "description": "Url is the url of the endpoint that returns the manifest", - "type": "string" + "sev": { + "description": "AMD Secure Encrypted Virtualization (SEV).", + "type": "object", + "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, + "policy": { + "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + "type": "object", + "properties": { + "encryptedState": { + "description": "SEV-ES is required. Defaults to false.", + "type": "boolean" + } + } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" + } + } } } }, - "x-kubernetes-list-map-keys": [ - "type" - ], - "x-kubernetes-list-type": "map" - }, - "volumes": { - "description": "Volumes is a list of available volumes to export", - "type": "array", - "items": { - "description": "VirtualMachineExportVolume contains the name and available formats for the exported volume", + "memory": { + "description": "Required Memory related attributes of the instancetype.", "type": "object", "required": [ - "name" + "guest" ], "properties": { - "formats": { - "type": "array", - "items": { - "description": "VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format", - "type": "object", - "required": [ - "format", - "url" - ], - "properties": { - "format": { - "description": "Format is the format of the image at the specified URL", - "type": "string" - }, - "url": { - "description": "Url is the url that contains the volume in the format specified", - "type": "string" - } + "guest": { + "description": "Required amount of memory which is visible inside the guest OS.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" } - }, - "x-kubernetes-list-map-keys": [ - "format" ], - "x-kubernetes-list-type": "map" + "x-kubernetes-int-or-string": true }, - "name": { - "description": "Name is the name of the exported volume", - "type": "string" + "hugepages": { + "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", + "type": "object", + "properties": { + "pageSize": { + "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", + "type": "string" + } + } + }, + "overcommitPercent": { + "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", + "type": "integer", + "maximum": 100, + "minimum": 0 } } }, - "x-kubernetes-list-map-keys": [ - "name" - ], - "x-kubernetes-list-type": "map" + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ \n NodeSelector is the name of the custom node selector for the instancetype.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler. \n SchedulerName is the name of the custom K8s scheduler for the instancetype.", + "type": "string" + } } } } } - }, - "phase": { - "description": "VirtualMachineExportPhase is the current phase of the VirtualMachineExport", - "type": "string" - }, - "serviceName": { - "description": "ServiceName is the name of the service created associated with the Virtual Machine export. It will be used to create the internal URLs for downloading the images", - "type": "string" - }, - "tokenSecretRef": { - "description": "TokenSecretRef is the name of the secret that contains the token used by the export server pod", - "type": "string" - }, - "ttlExpirationTime": { - "description": "The time at which the VM Export will be completely removed according to specified TTL Formula is CreationTimestamp + TTL", - "type": "string", - "format": "date-time" - }, - "virtualMachineName": { - "description": "VirtualMachineName shows the name of the source virtual machine if the source is either a VirtualMachine or a VirtualMachineSnapshot. This is mainly to easily identify the source VirtualMachine in case of a VirtualMachineSnapshot", - "type": "string" } - } - } - }, - "description": "VirtualMachineExport defines the operation of exporting a VM source", - "type": "object", - "required": [ - "spec" - ], - "x-kubernetes-group-version-kind": [ - { - "group": "export.kubevirt.io", - "kind": "VirtualMachineExport", - "version": "v1alpha1" - } - ] - }, - "crd": { - "metadata": { - "name": "virtualmachineexports.export.kubevirt.io" - }, - "spec": { - "group": "export.kubevirt.io", - "names": { - "plural": "virtualmachineexports", - "singular": "virtualmachineexport", - "shortNames": [ - "vmexport", - "vmexports" - ], - "kind": "VirtualMachineExport", - "listKind": "VirtualMachineExportList", - "categories": [ - "all" - ] - }, - "scope": "Namespaced", - "versions": [ + }, { - "name": "v1alpha1", + "name": "v1beta1", "served": true, "storage": true, "schema": { "openAPIV3Schema": { - "description": "VirtualMachineExport defines the operation of exporting a VM source", + "description": "VirtualMachineClusterInstancetype is a cluster scoped version of VirtualMachineInstancetype resource.", "type": "object", "required": [ "spec" @@ -43430,1054 +47078,954 @@ "type": "object" }, "spec": { - "description": "VirtualMachineExportSpec is the spec for a VirtualMachineExport resource", + "description": "Required spec describing the instancetype", "type": "object", "required": [ - "source" + "cpu", + "memory" ], "properties": { - "source": { - "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", + "annotations": { + "description": "Optionally defines the required Annotations to be used by the instance type and applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "cpu": { + "description": "Required CPU related attributes of the instancetype.", "type": "object", "required": [ - "kind", - "name" + "guest" ], "properties": { - "apiGroup": { - "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", - "type": "string" + "dedicatedCPUPlacement": { + "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", + "type": "boolean" }, - "kind": { - "description": "Kind is the type of resource being referenced", - "type": "string" + "guest": { + "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", + "type": "integer", + "format": "int32" }, - "name": { - "description": "Name is the name of resource being referenced", + "isolateEmulatorThread": { + "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "type": "boolean" + }, + "model": { + "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", "type": "string" + }, + "numa": { + "description": "NUMA allows specifying settings for the guest NUMA topology", + "type": "object", + "properties": { + "guestMappingPassthrough": { + "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", + "type": "object" + } + } + }, + "realtime": { + "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "type": "object", + "properties": { + "mask": { + "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "type": "string" + } + } + } + } + }, + "gpus": { + "description": "Optionally defines any GPU devices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "type": "string" + }, + "name": { + "description": "Name of the GPU device as exposed by a device plugin", + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + }, + "virtualGPUOptions": { + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + } + } + } } - } - }, - "tokenSecretRef": { - "description": "TokenSecretRef is the name of the custom-defined secret that contains the token used by the export server pod", - "type": "string" + }, + "x-kubernetes-list-type": "atomic" }, - "ttlDuration": { - "description": "ttlDuration limits the lifetime of an export If this field is set, after this duration has passed from counting from CreationTimestamp, the export is eligible to be automatically deleted. If this field is omitted, a reasonable default is applied.", - "type": "string" - } - } - }, - "status": { - "description": "VirtualMachineExportStatus is the status for a VirtualMachineExport resource", - "type": "object", - "properties": { - "conditions": { + "hostDevices": { + "description": "Optionally defines any HostDevices associated with the instancetype.", "type": "array", "items": { - "description": "Condition defines conditions", "type": "object", "required": [ - "status", - "type" + "deviceName", + "name" ], "properties": { - "lastProbeTime": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "lastTransitionTime": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "message": { - "type": "string" - }, - "reason": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", "type": "string" }, - "status": { + "name": { "type": "string" }, - "type": { - "description": "ConditionType is the const type for Conditions", + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", "type": "string" } } }, "x-kubernetes-list-type": "atomic" }, - "links": { - "description": "VirtualMachineExportLinks contains the links that point the exported VM resources", + "ioThreadsPolicy": { + "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", + "type": "string" + }, + "launchSecurity": { + "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", "type": "object", "properties": { - "external": { - "description": "VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes", + "sev": { + "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", - "required": [ - "cert" - ], "properties": { - "cert": { - "description": "Cert is the public CA certificate base64 encoded", + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", "type": "string" }, - "manifests": { - "description": "Manifests is a list of available manifests for the export", - "type": "array", - "items": { - "description": "VirtualMachineExportManifest contains the type and URL of the exported manifest", - "type": "object", - "required": [ - "type", - "url" - ], - "properties": { - "type": { - "description": "Type is the type of manifest returned", - "type": "string" - }, - "url": { - "description": "Url is the url of the endpoint that returns the manifest", - "type": "string" - } + "policy": { + "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + "type": "object", + "properties": { + "encryptedState": { + "description": "SEV-ES is required. Defaults to false.", + "type": "boolean" } - }, - "x-kubernetes-list-map-keys": [ - "type" - ], - "x-kubernetes-list-type": "map" + } }, - "volumes": { - "description": "Volumes is a list of available volumes to export", - "type": "array", - "items": { - "description": "VirtualMachineExportVolume contains the name and available formats for the exported volume", - "type": "object", - "required": [ - "name" - ], - "properties": { - "formats": { - "type": "array", - "items": { - "description": "VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format", - "type": "object", - "required": [ - "format", - "url" - ], - "properties": { - "format": { - "description": "Format is the format of the image at the specified URL", - "type": "string" - }, - "url": { - "description": "Url is the url that contains the volume in the format specified", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "format" - ], - "x-kubernetes-list-type": "map" - }, - "name": { - "description": "Name is the name of the exported volume", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "name" - ], - "x-kubernetes-list-type": "map" + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } + } + } + }, + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Required amount of memory which is visible inside the guest OS.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true }, - "internal": { - "description": "VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes", + "hugepages": { + "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", "type": "object", - "required": [ - "cert" - ], "properties": { - "cert": { - "description": "Cert is the public CA certificate base64 encoded", + "pageSize": { + "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", "type": "string" - }, - "manifests": { - "description": "Manifests is a list of available manifests for the export", - "type": "array", - "items": { - "description": "VirtualMachineExportManifest contains the type and URL of the exported manifest", - "type": "object", - "required": [ - "type", - "url" - ], - "properties": { - "type": { - "description": "Type is the type of manifest returned", - "type": "string" - }, - "url": { - "description": "Url is the url of the endpoint that returns the manifest", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "type" - ], - "x-kubernetes-list-type": "map" - }, - "volumes": { - "description": "Volumes is a list of available volumes to export", - "type": "array", - "items": { - "description": "VirtualMachineExportVolume contains the name and available formats for the exported volume", - "type": "object", - "required": [ - "name" - ], - "properties": { - "formats": { - "type": "array", - "items": { - "description": "VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format", - "type": "object", - "required": [ - "format", - "url" - ], - "properties": { - "format": { - "description": "Format is the format of the image at the specified URL", - "type": "string" - }, - "url": { - "description": "Url is the url that contains the volume in the format specified", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "format" - ], - "x-kubernetes-list-type": "map" - }, - "name": { - "description": "Name is the name of the exported volume", - "type": "string" - } - } - }, - "x-kubernetes-list-map-keys": [ - "name" - ], - "x-kubernetes-list-type": "map" } } + }, + "overcommitPercent": { + "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", + "type": "integer", + "maximum": 100, + "minimum": 0 } } - }, - "phase": { - "description": "VirtualMachineExportPhase is the current phase of the VirtualMachineExport", - "type": "string" - }, - "serviceName": { - "description": "ServiceName is the name of the service created associated with the Virtual Machine export. It will be used to create the internal URLs for downloading the images", - "type": "string" - }, - "tokenSecretRef": { - "description": "TokenSecretRef is the name of the secret that contains the token used by the export server pod", - "type": "string" - }, - "ttlExpirationTime": { - "description": "The time at which the VM Export will be completely removed according to specified TTL Formula is CreationTimestamp + TTL", - "type": "string", - "format": "date-time" - }, - "virtualMachineName": { - "description": "VirtualMachineName shows the name of the source virtual machine if the source is either a VirtualMachine or a VirtualMachineSnapshot. This is mainly to easily identify the source VirtualMachine in case of a VirtualMachineSnapshot", - "type": "string" + }, + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ \n NodeSelector is the name of the custom node selector for the instancetype.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler. \n SchedulerName is the name of the custom K8s scheduler for the instancetype.", + "type": "string" + } + } + } + } + } + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "virtualmachineclusterinstancetypes", + "singular": "virtualmachineclusterinstancetype", + "shortNames": [ + "vmclusterinstancetype", + "vmclusterinstancetypes", + "vmcf", + "vmcfs" + ], + "kind": "VirtualMachineClusterInstancetype", + "listKind": "VirtualMachineClusterInstancetypeList" + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "VirtualMachineClusterInstancetype", + "apiGroup": "instancetype.kubevirt.io", + "apiKind": "VirtualMachineClusterInstancetype", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kubevirt", + "sub": "kubevirt", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject" + }, + "namespaced": false + }, + { + "alternatives": [], + "name": "io.kubevirt.instancetype.v1beta1.VirtualMachineClusterPreference", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "description": "Required spec describing the preferences", + "properties": { + "annotations": { + "description": "Optionally defines preferred Annotations to be applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "clock": { + "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredClockOffset": { + "description": "ClockOffset allows specifying the UTC offset or the timezone of the guest clock.", + "type": "object", + "properties": { + "timezone": { + "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", + "type": "string" + }, + "utc": { + "description": "UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.", + "type": "object", + "properties": { + "offsetSeconds": { + "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", + "type": "integer" + } + } + } + } + }, + "preferredTimer": { + "description": "Timer specifies whih timers are attached to the vmi.", + "type": "object", + "properties": { + "hpet": { + "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", + "type": "string" + } + } + }, + "hyperv": { + "description": "Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + } + }, + "kvm": { + "description": "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + } + }, + "pit": { + "description": "PIT (Programmable Interval Timer) - a timer with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", + "type": "string" + } + } + }, + "rtc": { + "description": "RTC (Real Time Clock) - a continuously running timer with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", + "type": "string" + }, + "track": { + "description": "Track the guest or the wall clock.", + "type": "string" + } + } + } + } + } + } + }, + "cpu": { + "description": "CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredCPUFeatures": { + "description": "PreferredCPUFeatures optionally defines a slice of preferred CPU features.", + "type": "array", + "items": { + "description": "CPUFeature allows specifying a CPU feature.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name of the CPU feature", + "type": "string" + }, + "policy": { + "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", + "type": "string" + } + } + } + }, + "preferredCPUTopology": { + "description": "PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.", + "type": "string" + } + } + }, + "devices": { + "description": "Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredAutoattachGraphicsDevice": { + "description": "PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice", + "type": "boolean" + }, + "preferredAutoattachInputDevice": { + "description": "PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice", + "type": "boolean" + }, + "preferredAutoattachMemBalloon": { + "description": "PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon", + "type": "boolean" + }, + "preferredAutoattachPodInterface": { + "description": "PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface", + "type": "boolean" + }, + "preferredAutoattachSerialConsole": { + "description": "PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole", + "type": "boolean" + }, + "preferredBlockMultiQueue": { + "description": "PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.", + "type": "boolean" + }, + "preferredCdromBus": { + "description": "PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.", + "type": "string" + }, + "preferredDisableHotplug": { + "description": "PreferredDisableHotplug optionally defines the preferred value of DisableHotplug", + "type": "boolean" + }, + "preferredDiskBlockSize": { + "description": "PreferredBlockSize optionally defines the block size of Disk devices.", + "type": "object", + "properties": { + "custom": { + "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", + "type": "object", + "required": [ + "logical", + "physical" + ], + "properties": { + "logical": { + "type": "integer" + }, + "physical": { + "type": "integer" + } + } + }, + "matchVolume": { + "description": "Represents if a feature is enabled or disabled.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } } } } - } - } - }, - "additionalPrinterColumns": [ - { - "name": "SourceKind", - "type": "string", - "jsonPath": ".spec.source.kind" - }, - { - "name": "SourceName", - "type": "string", - "jsonPath": ".spec.source.name" - }, - { - "name": "Phase", - "type": "string", - "jsonPath": ".status.phase" - } - ] - } - ], - "conversion": {} - }, - "status": { - "conditions": [], - "acceptedNames": { - "plural": "virtualmachineexports", - "singular": "virtualmachineexport", - "shortNames": [ - "vmexport", - "vmexports" - ], - "kind": "VirtualMachineExport", - "listKind": "VirtualMachineExportList", - "categories": [ - "all" - ] - }, - "storedVersions": [ - "v1alpha1" - ] - } - }, - "additionalColumns": [ - { - "name": "SourceKind", - "type": "string", - "jsonPath": ".spec.source.kind" - }, - { - "name": "SourceName", - "type": "string", - "jsonPath": ".spec.source.name" - }, - { - "name": "Phase", - "type": "string", - "jsonPath": ".status.phase" - } - ], - "short": "VirtualMachineExport", - "apiGroup": "export.kubevirt.io", - "apiKind": "VirtualMachineExport", - "apiVersion": "v1alpha1", - "readProperties": { - "spec": "spec", - "status": "status" - }, - "writeProperties": { - "spec": "spec" - }, - "group": "kubevirt", - "sub": "kubevirt", - "listExcludes": [], - "readExcludes": [], - "simpleExcludes": [], - "gqlDefs": { - "metadata": "metadata!", - "spec": "JSONObject", - "status": "JSONObject" - }, - "namespaced": true - }, - { - "alternatives": [], - "name": "io.kubevirt.instancetype.v1beta1.VirtualMachineClusterInstancetype", - "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" - }, - "spec": { - "description": "Required spec describing the instancetype", - "type": "object", - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "dedicatedCPUPlacement": { - "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", + }, + "preferredDiskBus": { + "description": "PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.", + "type": "string" + }, + "preferredDiskCache": { + "description": "PreferredCache optionally defines the DriverCache to be used by Disk devices.", + "type": "string" + }, + "preferredDiskDedicatedIoThread": { + "description": "PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.", "type": "boolean" }, - "guest": { - "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", - "type": "integer", - "format": "int32" + "preferredDiskIO": { + "description": "PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.", + "type": "string" }, - "isolateEmulatorThread": { - "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "preferredInputBus": { + "description": "PreferredInputBus optionally defines the preferred bus for Input devices.", + "type": "string" + }, + "preferredInputType": { + "description": "PreferredInputType optionally defines the preferred type for Input devices.", + "type": "string" + }, + "preferredInterfaceMasquerade": { + "description": "PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.", + "type": "object" + }, + "preferredInterfaceModel": { + "description": "PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.", + "type": "string" + }, + "preferredLunBus": { + "description": "PreferredLunBus optionally defines the preferred bus for Lun Disk devices.", + "type": "string" + }, + "preferredNetworkInterfaceMultiQueue": { + "description": "PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.", "type": "boolean" }, - "model": { - "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", + "preferredRng": { + "description": "PreferredRng optionally defines the preferred rng device to be used.", + "type": "object" + }, + "preferredSoundModel": { + "description": "PreferredSoundModel optionally defines the preferred model for Sound devices.", "type": "string" }, - "numa": { - "description": "NUMA allows specifying settings for the guest NUMA topology", + "preferredTPM": { + "description": "PreferredTPM optionally defines the preferred TPM device to be used.", "type": "object", "properties": { - "guestMappingPassthrough": { - "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", - "type": "object" + "persistent": { + "description": "Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false", + "type": "boolean" } } }, - "realtime": { - "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "preferredUseVirtioTransitional": { + "description": "PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional", + "type": "boolean" + }, + "preferredVirtualGPUOptions": { + "description": "PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions", "type": "object", "properties": { - "mask": { - "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", - "type": "string" + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } } } } } }, - "gpus": { - "description": "Optionally defines any GPU devices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "type": "string" - }, - "name": { - "description": "Name of the GPU device as exposed by a device plugin", - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - }, - "virtualGPUOptions": { - "type": "object", - "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } + "features": { + "description": "Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredAcpi": { + "description": "PreferredAcpi optionally enables the ACPI feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "preferredApic": { + "description": "PreferredApic optionally enables and configures the APIC feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "endOfInterrupt": { + "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", + "type": "boolean" + } + } + }, + "preferredHyperv": { + "description": "PreferredHyperv optionally enables and configures HyperV features", + "type": "object", + "properties": { + "evmcs": { + "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "frequencies": { + "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "ipi": { + "description": "IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "reenlightenment": { + "description": "Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "relaxed": { + "description": "Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "reset": { + "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "runtime": { + "description": "Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "spinlocks": { + "description": "Spinlocks allows to configure the spinlock retry attempts.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "spinlocks": { + "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", + "type": "integer", + "format": "int32" + } + } + }, + "synic": { + "description": "SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "synictimer": { + "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.", + "type": "object", + "properties": { + "direct": { + "description": "Represents if a feature is enabled or disabled.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" } } + }, + "enabled": { + "type": "boolean" + } + } + }, + "tlbflush": { + "description": "TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "vapic": { + "description": "VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "vendorid": { + "description": "VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "vendorid": { + "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", + "type": "string" + } + } + }, + "vpindex": { + "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" } } } } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Optionally defines any HostDevices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "description": "DeviceName is the resource name of the host device exposed by a device plugin", - "type": "string" - }, - "name": { - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" + }, + "preferredKvm": { + "description": "PreferredKvm optionally enables and configures KVM features", + "type": "object", + "properties": { + "hidden": { + "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", + "type": "boolean" + } + } + }, + "preferredPvspinlock": { + "description": "PreferredPvspinlock optionally enables the Pvspinlock feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "preferredSmm": { + "description": "PreferredSmm optionally enables the SMM feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } } } - }, - "x-kubernetes-list-type": "atomic" + } }, - "ioThreadsPolicy": { - "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", - "type": "string" + "firmware": { + "description": "Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredUseBios": { + "description": "PreferredUseBios optionally enables BIOS", + "type": "boolean" + }, + "preferredUseBiosSerial": { + "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled.", + "type": "boolean" + }, + "preferredUseEfi": { + "description": "PreferredUseEfi optionally enables EFI", + "type": "boolean" + }, + "preferredUseSecureBoot": { + "description": "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled.", + "type": "boolean" + } + } }, - "launchSecurity": { - "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", + "machine": { + "description": "Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec", "type": "object", "properties": { - "sev": { - "description": "AMD Secure Encrypted Virtualization (SEV).", - "type": "object", - "properties": { - "policy": { - "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", - "type": "object", - "properties": { - "encryptedState": { - "description": "SEV-ES is required. Defaults to false.", - "type": "boolean" - } - } - } - } + "preferredMachineType": { + "description": "PreferredMachineType optionally defines the preferred machine type to use.", + "type": "string" } } }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", + "preferSpreadSocketToCoreRatio": { + "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.", + "type": "integer", + "format": "int32" + }, + "preferredSubdomain": { + "description": "Subdomain of the VirtualMachineInstance", + "type": "string" + }, + "preferredTerminationGracePeriodSeconds": { + "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", + "type": "integer", + "format": "int64" + }, + "requirements": { + "description": "Requirements defines the minium amount of instance type defined resources required by a set of preferences", "type": "object", - "required": [ - "guest" - ], "properties": { - "guest": { - "description": "Required amount of memory which is visible inside the guest OS.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "hugepages": { - "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", + "cpu": { + "description": "Required CPU related attributes of the instancetype.", "type": "object", + "required": [ + "guest" + ], "properties": { - "pageSize": { - "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", - "type": "string" + "guest": { + "description": "Minimal number of vCPUs required by the preference.", + "type": "integer", + "format": "int32" } } }, - "overcommitPercent": { - "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", - "type": "integer", - "maximum": 100, - "minimum": 0 - } - } - } - } - } - }, - "description": "VirtualMachineClusterInstancetype is a cluster scoped version of VirtualMachineInstancetype resource.", - "type": "object", - "required": [ - "spec" - ], - "x-kubernetes-group-version-kind": [ - { - "group": "instancetype.kubevirt.io", - "kind": "VirtualMachineClusterInstancetype", - "version": "v1beta1" - } - ] - }, - "crd": { - "metadata": { - "name": "virtualmachineclusterinstancetypes.instancetype.kubevirt.io" - }, - "spec": { - "group": "instancetype.kubevirt.io", - "names": { - "plural": "virtualmachineclusterinstancetypes", - "singular": "virtualmachineclusterinstancetype", - "shortNames": [ - "vmclusterinstancetype", - "vmclusterinstancetypes", - "vmcf", - "vmcfs" - ], - "kind": "VirtualMachineClusterInstancetype", - "listKind": "VirtualMachineClusterInstancetypeList" - }, - "scope": "Cluster", - "versions": [ - { - "name": "v1alpha1", - "served": true, - "storage": false, - "deprecated": true, - "deprecationWarning": "instancetype.kubevirt.io/v1alpha1 VirtualMachineClusterInstanceTypes is now deprecated and will be removed in v1.", - "schema": { - "openAPIV3Schema": { - "description": "VirtualMachineClusterInstancetype is a cluster scoped version of VirtualMachineInstancetype resource.", - "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" - }, - "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": "Required spec describing the instancetype", - "type": "object", - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "dedicatedCPUPlacement": { - "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", - "type": "boolean" - }, - "guest": { - "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", - "type": "integer", - "format": "int32" - }, - "isolateEmulatorThread": { - "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", - "type": "boolean" - }, - "model": { - "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", - "type": "string" - }, - "numa": { - "description": "NUMA allows specifying settings for the guest NUMA topology", - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", - "type": "object", - "properties": { - "mask": { - "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", - "type": "string" - } - } - } - } - }, - "gpus": { - "description": "Optionally defines any GPU devices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "type": "string" - }, - "name": { - "description": "Name of the GPU device as exposed by a device plugin", - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - }, - "virtualGPUOptions": { - "type": "object", - "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Optionally defines any HostDevices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "description": "DeviceName is the resource name of the host device exposed by a device plugin", - "type": "string" - }, - "name": { - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "ioThreadsPolicy": { - "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", - "type": "string" - }, - "launchSecurity": { - "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", - "type": "object", - "properties": { - "sev": { - "description": "AMD Secure Encrypted Virtualization (SEV).", - "type": "object", - "properties": { - "policy": { - "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", - "type": "object", - "properties": { - "encryptedState": { - "description": "SEV-ES is required. Defaults to false.", - "type": "boolean" - } - } - } - } - } - } - }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Required amount of memory which is visible inside the guest OS.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true - }, - "hugepages": { - "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", - "type": "object", - "properties": { - "pageSize": { - "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", - "type": "string" - } - } - }, - "overcommitPercent": { - "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", - "type": "integer", - "maximum": 100, - "minimum": 0 - } - } - } - } - } - } - } - } - }, - { - "name": "v1alpha2", - "served": true, - "storage": false, - "deprecated": true, - "deprecationWarning": "instancetype.kubevirt.io/v1alpha2 VirtualMachineClusterInstanceTypes is now deprecated and will be removed in v1.", - "schema": { - "openAPIV3Schema": { - "description": "VirtualMachineClusterInstancetype is a cluster scoped version of VirtualMachineInstancetype resource.", - "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" - }, - "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": "Required spec describing the instancetype", - "type": "object", - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "dedicatedCPUPlacement": { - "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", - "type": "boolean" - }, - "guest": { - "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", - "type": "integer", - "format": "int32" - }, - "isolateEmulatorThread": { - "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", - "type": "boolean" - }, - "model": { - "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", - "type": "string" - }, - "numa": { - "description": "NUMA allows specifying settings for the guest NUMA topology", - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", - "type": "object", - "properties": { - "mask": { - "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", - "type": "string" - } - } - } - } - }, - "gpus": { - "description": "Optionally defines any GPU devices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "type": "string" - }, - "name": { - "description": "Name of the GPU device as exposed by a device plugin", - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - }, - "virtualGPUOptions": { - "type": "object", - "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Optionally defines any HostDevices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "description": "DeviceName is the resource name of the host device exposed by a device plugin", - "type": "string" - }, - "name": { - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Minimal amount of memory required by the preference.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" }, - "x-kubernetes-list-type": "atomic" - }, - "ioThreadsPolicy": { - "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", - "type": "string" - }, - "launchSecurity": { - "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", - "type": "object", - "properties": { - "sev": { - "description": "AMD Secure Encrypted Virtualization (SEV).", - "type": "object", - "properties": { - "policy": { - "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", - "type": "object", - "properties": { - "encryptedState": { - "description": "SEV-ES is required. Defaults to false.", - "type": "boolean" - } - } - } - } - } - } - }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Required amount of memory which is visible inside the guest OS.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true - }, - "hugepages": { - "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", - "type": "object", - "properties": { - "pageSize": { - "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", - "type": "string" - } - } - }, - "overcommitPercent": { - "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", - "type": "integer", - "maximum": 100, - "minimum": 0 - } + { + "type": "string" } - } + ] } } } } + }, + "volumes": { + "description": "Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec", + "type": "object", + "properties": { + "preferredStorageClassName": { + "description": "PreffereedStorageClassName optionally defines the preferred storageClass", + "type": "string" + } + } } - }, + } + }, + "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" + } + }, + "description": "VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.", + "type": "object", + "required": [ + "spec" + ], + "x-kubernetes-group-version-kind": [ + { + "group": "instancetype.kubevirt.io", + "kind": "VirtualMachineClusterPreference", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "virtualmachineclusterpreferences.instancetype.kubevirt.io" + }, + "spec": { + "group": "instancetype.kubevirt.io", + "names": { + "plural": "virtualmachineclusterpreferences", + "singular": "virtualmachineclusterpreference", + "shortNames": [ + "vmcp", + "vmcps" + ], + "kind": "VirtualMachineClusterPreference", + "listKind": "VirtualMachineClusterPreferenceList" + }, + "scope": "Cluster", + "versions": [ { - "name": "v1beta1", + "name": "v1alpha1", "served": true, - "storage": true, + "storage": false, + "deprecated": true, + "deprecationWarning": "instancetype.kubevirt.io/v1alpha1 VirtualMachineClusterPreferences is now deprecated and will be removed in v1.", "schema": { "openAPIV3Schema": { - "description": "VirtualMachineClusterInstancetype is a cluster scoped version of VirtualMachineInstancetype resource.", + "description": "VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.", "type": "object", "required": [ "spec" @@ -44495,152 +48043,295 @@ "type": "object" }, "spec": { - "description": "Required spec describing the instancetype", + "description": "Required spec describing the preferences", "type": "object", - "required": [ - "cpu", - "memory" - ], "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", + "annotations": { + "description": "Optionally defines preferred Annotations to be applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "clock": { + "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", "type": "object", - "required": [ - "guest" - ], "properties": { - "dedicatedCPUPlacement": { - "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", - "type": "boolean" - }, - "guest": { - "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", - "type": "integer", - "format": "int32" - }, - "isolateEmulatorThread": { - "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", - "type": "boolean" - }, - "model": { - "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", - "type": "string" - }, - "numa": { - "description": "NUMA allows specifying settings for the guest NUMA topology", + "preferredClockOffset": { + "description": "ClockOffset allows specifying the UTC offset or the timezone of the guest clock.", "type": "object", "properties": { - "guestMappingPassthrough": { - "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", - "type": "object" + "timezone": { + "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", + "type": "string" + }, + "utc": { + "description": "UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.", + "type": "object", + "properties": { + "offsetSeconds": { + "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", + "type": "integer" + } + } } } }, - "realtime": { - "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "preferredTimer": { + "description": "Timer specifies whih timers are attached to the vmi.", "type": "object", "properties": { - "mask": { - "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", - "type": "string" + "hpet": { + "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", + "type": "string" + } + } + }, + "hyperv": { + "description": "Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + } + }, + "kvm": { + "description": "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + } + }, + "pit": { + "description": "PIT (Programmable Interval Timer) - a timer with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", + "type": "string" + } + } + }, + "rtc": { + "description": "RTC (Real Time Clock) - a continuously running timer with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", + "type": "string" + }, + "track": { + "description": "Track the guest or the wall clock.", + "type": "string" + } + } } } } } }, - "gpus": { - "description": "Optionally defines any GPU devices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "type": "string" - }, - "name": { - "description": "Name of the GPU device as exposed by a device plugin", - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - }, - "virtualGPUOptions": { + "cpu": { + "description": "CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredCPUFeatures": { + "description": "PreferredCPUFeatures optionally defines a slice of preferred CPU features.", + "type": "array", + "items": { + "description": "CPUFeature allows specifying a CPU feature.", "type": "object", + "required": [ + "name" + ], "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } + "name": { + "description": "Name of the CPU feature", + "type": "string" + }, + "policy": { + "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", + "type": "string" } } } + }, + "preferredCPUTopology": { + "description": "PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.", + "type": "string" } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Optionally defines any HostDevices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "description": "DeviceName is the resource name of the host device exposed by a device plugin", - "type": "string" - }, - "name": { - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "ioThreadsPolicy": { - "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", - "type": "string" + } }, - "launchSecurity": { - "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", + "devices": { + "description": "Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec", "type": "object", "properties": { - "sev": { - "description": "AMD Secure Encrypted Virtualization (SEV).", + "preferredAutoattachGraphicsDevice": { + "description": "PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice", + "type": "boolean" + }, + "preferredAutoattachInputDevice": { + "description": "PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice", + "type": "boolean" + }, + "preferredAutoattachMemBalloon": { + "description": "PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon", + "type": "boolean" + }, + "preferredAutoattachPodInterface": { + "description": "PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface", + "type": "boolean" + }, + "preferredAutoattachSerialConsole": { + "description": "PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole", + "type": "boolean" + }, + "preferredBlockMultiQueue": { + "description": "PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.", + "type": "boolean" + }, + "preferredCdromBus": { + "description": "PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.", + "type": "string" + }, + "preferredDisableHotplug": { + "description": "PreferredDisableHotplug optionally defines the preferred value of DisableHotplug", + "type": "boolean" + }, + "preferredDiskBlockSize": { + "description": "PreferredBlockSize optionally defines the block size of Disk devices.", "type": "object", "properties": { - "policy": { - "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + "custom": { + "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", "type": "object", + "required": [ + "logical", + "physical" + ], "properties": { - "encryptedState": { - "description": "SEV-ES is required. Defaults to false.", + "logical": { + "type": "integer" + }, + "physical": { + "type": "integer" + } + } + }, + "matchVolume": { + "description": "Represents if a feature is enabled or disabled.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + }, + "preferredDiskBus": { + "description": "PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.", + "type": "string" + }, + "preferredDiskCache": { + "description": "PreferredCache optionally defines the DriverCache to be used by Disk devices.", + "type": "string" + }, + "preferredDiskDedicatedIoThread": { + "description": "PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.", + "type": "boolean" + }, + "preferredDiskIO": { + "description": "PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.", + "type": "string" + }, + "preferredInputBus": { + "description": "PreferredInputBus optionally defines the preferred bus for Input devices.", + "type": "string" + }, + "preferredInputType": { + "description": "PreferredInputType optionally defines the preferred type for Input devices.", + "type": "string" + }, + "preferredInterfaceMasquerade": { + "description": "PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.", + "type": "object" + }, + "preferredInterfaceModel": { + "description": "PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.", + "type": "string" + }, + "preferredLunBus": { + "description": "PreferredLunBus optionally defines the preferred bus for Lun Disk devices.", + "type": "string" + }, + "preferredNetworkInterfaceMultiQueue": { + "description": "PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.", + "type": "boolean" + }, + "preferredRng": { + "description": "PreferredRng optionally defines the preferred rng device to be used.", + "type": "object" + }, + "preferredSoundModel": { + "description": "PreferredSoundModel optionally defines the preferred model for Sound devices.", + "type": "string" + }, + "preferredTPM": { + "description": "PreferredTPM optionally defines the preferred TPM device to be used.", + "type": "object", + "properties": { + "persistent": { + "description": "Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false", + "type": "boolean" + } + } + }, + "preferredUseVirtioTransitional": { + "description": "PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional", + "type": "boolean" + }, + "preferredVirtualGPUOptions": { + "description": "PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions", + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } } } } @@ -44648,745 +48339,340 @@ } } }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", + "features": { + "description": "Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec", "type": "object", - "required": [ - "guest" - ], "properties": { - "guest": { - "description": "Required amount of memory which is visible inside the guest OS.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" + "preferredAcpi": { + "description": "PreferredAcpi optionally enables the ACPI feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" } - ], - "x-kubernetes-int-or-string": true + } }, - "hugepages": { - "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", + "preferredApic": { + "description": "PreferredApic optionally enables and configures the APIC feature", "type": "object", "properties": { - "pageSize": { - "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", - "type": "string" + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "endOfInterrupt": { + "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", + "type": "boolean" } } }, - "overcommitPercent": { - "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", - "type": "integer", - "maximum": 100, - "minimum": 0 - } - } - } - } - } - } - } - } - } - ], - "conversion": {} - }, - "status": { - "conditions": [], - "acceptedNames": { - "plural": "virtualmachineclusterinstancetypes", - "singular": "virtualmachineclusterinstancetype", - "shortNames": [ - "vmclusterinstancetype", - "vmclusterinstancetypes", - "vmcf", - "vmcfs" - ], - "kind": "VirtualMachineClusterInstancetype", - "listKind": "VirtualMachineClusterInstancetypeList" - }, - "storedVersions": [ - "v1beta1" - ] - } - }, - "short": "VirtualMachineClusterInstancetype", - "apiGroup": "instancetype.kubevirt.io", - "apiKind": "VirtualMachineClusterInstancetype", - "apiVersion": "v1beta1", - "readProperties": { - "spec": "spec" - }, - "writeProperties": { - "spec": "spec" - }, - "group": "kubevirt", - "sub": "kubevirt", - "listExcludes": [], - "readExcludes": [], - "simpleExcludes": [], - "gqlDefs": { - "metadata": "metadata!", - "spec": "JSONObject" - }, - "namespaced": false - }, - { - "alternatives": [], - "name": "io.kubevirt.instancetype.v1beta1.VirtualMachineClusterPreference", - "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" - }, - "spec": { - "description": "Required spec describing the preferences", - "type": "object", - "properties": { - "clock": { - "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredClockOffset": { - "description": "ClockOffset allows specifying the UTC offset or the timezone of the guest clock.", - "type": "object", - "properties": { - "timezone": { - "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", - "type": "string" - }, - "utc": { - "description": "UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.", - "type": "object", - "properties": { - "offsetSeconds": { - "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", - "type": "integer" - } - } - } - } - }, - "preferredTimer": { - "description": "Timer specifies whih timers are attached to the vmi.", - "type": "object", - "properties": { - "hpet": { - "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", - "type": "string" - } - } - }, - "hyperv": { - "description": "Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - } - }, - "kvm": { - "description": "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - } - }, - "pit": { - "description": "PIT (Programmable Interval Timer) - a timer with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", - "type": "string" - } - } - }, - "rtc": { - "description": "RTC (Real Time Clock) - a continuously running timer with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", - "type": "string" - }, - "track": { - "description": "Track the guest or the wall clock.", - "type": "string" - } - } - } - } - } - } - }, - "cpu": { - "description": "CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredCPUFeatures": { - "description": "PreferredCPUFeatures optionally defines a slice of preferred CPU features.", - "type": "array", - "items": { - "description": "CPUFeature allows specifying a CPU feature.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name of the CPU feature", - "type": "string" - }, - "policy": { - "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", - "type": "string" - } - } - } - }, - "preferredCPUTopology": { - "description": "PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.", - "type": "string" - } - } - }, - "devices": { - "description": "Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredAutoattachGraphicsDevice": { - "description": "PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice", - "type": "boolean" - }, - "preferredAutoattachInputDevice": { - "description": "PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice", - "type": "boolean" - }, - "preferredAutoattachMemBalloon": { - "description": "PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon", - "type": "boolean" - }, - "preferredAutoattachPodInterface": { - "description": "PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface", - "type": "boolean" - }, - "preferredAutoattachSerialConsole": { - "description": "PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole", - "type": "boolean" - }, - "preferredBlockMultiQueue": { - "description": "PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.", - "type": "boolean" - }, - "preferredCdromBus": { - "description": "PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.", - "type": "string" - }, - "preferredDisableHotplug": { - "description": "PreferredDisableHotplug optionally defines the preferred value of DisableHotplug", - "type": "boolean" - }, - "preferredDiskBlockSize": { - "description": "PreferredBlockSize optionally defines the block size of Disk devices.", - "type": "object", - "properties": { - "custom": { - "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", - "type": "object", - "required": [ - "logical", - "physical" - ], - "properties": { - "logical": { - "type": "integer" - }, - "physical": { - "type": "integer" - } - } - }, - "matchVolume": { - "description": "Represents if a feature is enabled or disabled.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "preferredDiskBus": { - "description": "PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.", - "type": "string" - }, - "preferredDiskCache": { - "description": "PreferredCache optionally defines the DriverCache to be used by Disk devices.", - "type": "string" - }, - "preferredDiskDedicatedIoThread": { - "description": "PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.", - "type": "boolean" - }, - "preferredDiskIO": { - "description": "PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.", - "type": "string" - }, - "preferredInputBus": { - "description": "PreferredInputBus optionally defines the preferred bus for Input devices.", - "type": "string" - }, - "preferredInputType": { - "description": "PreferredInputType optionally defines the preferred type for Input devices.", - "type": "string" - }, - "preferredInterfaceMasquerade": { - "description": "PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.", - "type": "object" - }, - "preferredInterfaceModel": { - "description": "PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.", - "type": "string" - }, - "preferredLunBus": { - "description": "PreferredLunBus optionally defines the preferred bus for Lun Disk devices.", - "type": "string" - }, - "preferredNetworkInterfaceMultiQueue": { - "description": "PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.", - "type": "boolean" - }, - "preferredRng": { - "description": "PreferredRng optionally defines the preferred rng device to be used.", - "type": "object" - }, - "preferredSoundModel": { - "description": "PreferredSoundModel optionally defines the preferred model for Sound devices.", - "type": "string" - }, - "preferredTPM": { - "description": "PreferredTPM optionally defines the preferred TPM device to be used.", - "type": "object", - "properties": { - "persistent": { - "description": "Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false", - "type": "boolean" - } - } - }, - "preferredUseVirtioTransitional": { - "description": "PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional", - "type": "boolean" - }, - "preferredVirtualGPUOptions": { - "description": "PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions", - "type": "object", - "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "preferredHyperv": { + "description": "PreferredHyperv optionally enables and configures HyperV features", + "type": "object", + "properties": { + "evmcs": { + "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "frequencies": { + "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "ipi": { + "description": "IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "reenlightenment": { + "description": "Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "relaxed": { + "description": "Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "reset": { + "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "runtime": { + "description": "Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "spinlocks": { + "description": "Spinlocks allows to configure the spinlock retry attempts.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "spinlocks": { + "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", + "type": "integer", + "format": "int32" + } + } + }, + "synic": { + "description": "SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "synictimer": { + "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.", + "type": "object", + "properties": { + "direct": { + "description": "Represents if a feature is enabled or disabled.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "enabled": { + "type": "boolean" + } + } + }, + "tlbflush": { + "description": "TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "vapic": { + "description": "VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "vendorid": { + "description": "VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "vendorid": { + "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", + "type": "string" + } + } + }, + "vpindex": { + "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + }, + "preferredKvm": { + "description": "PreferredKvm optionally enables and configures KVM features", + "type": "object", + "properties": { + "hidden": { + "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", + "type": "boolean" + } + } + }, + "preferredPvspinlock": { + "description": "PreferredPvspinlock optionally enables the Pvspinlock feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "preferredSmm": { + "description": "PreferredSmm optionally enables the SMM feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } } } } - } - } - } - } - } - }, - "features": { - "description": "Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredAcpi": { - "description": "PreferredAcpi optionally enables the ACPI feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "preferredApic": { - "description": "PreferredApic optionally enables and configures the APIC feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "endOfInterrupt": { - "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", - "type": "boolean" - } - } - }, - "preferredHyperv": { - "description": "PreferredHyperv optionally enables and configures HyperV features", - "type": "object", - "properties": { - "evmcs": { - "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "frequencies": { - "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "ipi": { - "description": "IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "reenlightenment": { - "description": "Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "relaxed": { - "description": "Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "reset": { - "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "runtime": { - "description": "Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "spinlocks": { - "description": "Spinlocks allows to configure the spinlock retry attempts.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "spinlocks": { - "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", - "type": "integer", - "format": "int32" + }, + "firmware": { + "description": "Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredUseBios": { + "description": "PreferredUseBios optionally enables BIOS", + "type": "boolean" + }, + "preferredUseBiosSerial": { + "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled.", + "type": "boolean" + }, + "preferredUseEfi": { + "description": "PreferredUseEfi optionally enables EFI", + "type": "boolean" + }, + "preferredUseSecureBoot": { + "description": "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled.", + "type": "boolean" + } } - } - }, - "synic": { - "description": "SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + }, + "machine": { + "description": "Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredMachineType": { + "description": "PreferredMachineType optionally defines the preferred machine type to use.", + "type": "string" + } } - } - }, - "synictimer": { - "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.", - "type": "object", - "properties": { - "direct": { - "description": "Represents if a feature is enabled or disabled.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + }, + "preferSpreadSocketToCoreRatio": { + "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.", + "type": "integer", + "format": "int32" + }, + "preferredSubdomain": { + "description": "Subdomain of the VirtualMachineInstance", + "type": "string" + }, + "preferredTerminationGracePeriodSeconds": { + "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", + "type": "integer", + "format": "int64" + }, + "requirements": { + "description": "Requirements defines the minium amount of instance type defined resources required by a set of preferences", + "type": "object", + "properties": { + "cpu": { + "description": "Required CPU related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Minimal number of vCPUs required by the preference.", + "type": "integer", + "format": "int32" + } + } + }, + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Minimal amount of memory required by the preference.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } } } - }, - "enabled": { - "type": "boolean" - } - } - }, - "tlbflush": { - "description": "TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "vapic": { - "description": "VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "vendorid": { - "description": "VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "vendorid": { - "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", - "type": "string" } - } - }, - "vpindex": { - "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + }, + "volumes": { + "description": "Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec", + "type": "object", + "properties": { + "preferredStorageClassName": { + "description": "PreffereedStorageClassName optionally defines the preferred storageClass", + "type": "string" + } } } } } - }, - "preferredKvm": { - "description": "PreferredKvm optionally enables and configures KVM features", - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "preferredPvspinlock": { - "description": "PreferredPvspinlock optionally enables the Pvspinlock feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "preferredSmm": { - "description": "PreferredSmm optionally enables the SMM feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "firmware": { - "description": "Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredUseBios": { - "description": "PreferredUseBios optionally enables BIOS", - "type": "boolean" - }, - "preferredUseBiosSerial": { - "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled.", - "type": "boolean" - }, - "preferredUseEfi": { - "description": "PreferredUseEfi optionally enables EFI", - "type": "boolean" - }, - "preferredUseSecureBoot": { - "description": "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled.", - "type": "boolean" - } - } - }, - "machine": { - "description": "Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredMachineType": { - "description": "PreferredMachineType optionally defines the preferred machine type to use.", - "type": "string" - } - } - }, - "preferredSubdomain": { - "description": "Subdomain of the VirtualMachineInstance", - "type": "string" - }, - "preferredTerminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "requirements": { - "description": "Requirements defines the minium amount of instance type defined resources required by a set of preferences", - "type": "object", - "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Minimal number of vCPUs required by the preference.", - "type": "integer", - "format": "int32" - } - } - }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Minimal amount of memory required by the preference.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - } - } - } - } - }, - "volumes": { - "description": "Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec", - "type": "object", - "properties": { - "preferredStorageClassName": { - "description": "PreffereedStorageClassName optionally defines the preferred storageClass", - "type": "string" } } } - } - } - }, - "description": "VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.", - "type": "object", - "required": [ - "spec" - ], - "x-kubernetes-group-version-kind": [ - { - "group": "instancetype.kubevirt.io", - "kind": "VirtualMachineClusterPreference", - "version": "v1beta1" - } - ] - }, - "crd": { - "metadata": { - "name": "virtualmachineclusterpreferences.instancetype.kubevirt.io" - }, - "spec": { - "group": "instancetype.kubevirt.io", - "names": { - "plural": "virtualmachineclusterpreferences", - "singular": "virtualmachineclusterpreference", - "shortNames": [ - "vmcp", - "vmcps" - ], - "kind": "VirtualMachineClusterPreference", - "listKind": "VirtualMachineClusterPreferenceList" - }, - "scope": "Cluster", - "versions": [ + }, { - "name": "v1alpha1", + "name": "v1alpha2", "served": true, "storage": false, "deprecated": true, - "deprecationWarning": "instancetype.kubevirt.io/v1alpha1 VirtualMachineClusterPreferences is now deprecated and will be removed in v1.", + "deprecationWarning": "instancetype.kubevirt.io/v1alpha2 VirtualMachineClusterPreferences is now deprecated and will be removed in v1.", "schema": { "openAPIV3Schema": { "description": "VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.", @@ -45410,6 +48696,13 @@ "description": "Required spec describing the preferences", "type": "object", "properties": { + "annotations": { + "description": "Optionally defines preferred Annotations to be applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "clock": { "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", "type": "object", @@ -45952,6 +49245,11 @@ } } }, + "preferSpreadSocketToCoreRatio": { + "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.", + "type": "integer", + "format": "int32" + }, "preferredSubdomain": { "description": "Subdomain of the VirtualMachineInstance", "type": "string" @@ -46020,11 +49318,9 @@ } }, { - "name": "v1alpha2", + "name": "v1beta1", "served": true, - "storage": false, - "deprecated": true, - "deprecationWarning": "instancetype.kubevirt.io/v1alpha2 VirtualMachineClusterPreferences is now deprecated and will be removed in v1.", + "storage": true, "schema": { "openAPIV3Schema": { "description": "VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.", @@ -46048,6 +49344,13 @@ "description": "Required spec describing the preferences", "type": "object", "properties": { + "annotations": { + "description": "Optionally defines preferred Annotations to be applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "clock": { "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", "type": "object", @@ -46590,6 +49893,11 @@ } } }, + "preferSpreadSocketToCoreRatio": { + "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.", + "type": "integer", + "format": "int32" + }, "preferredSubdomain": { "description": "Subdomain of the VirtualMachineInstance", "type": "string" @@ -46656,14 +49964,334 @@ } } } - }, + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "virtualmachineclusterpreferences", + "singular": "virtualmachineclusterpreference", + "shortNames": [ + "vmcp", + "vmcps" + ], + "kind": "VirtualMachineClusterPreference", + "listKind": "VirtualMachineClusterPreferenceList" + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "VirtualMachineClusterPreference", + "apiGroup": "instancetype.kubevirt.io", + "apiKind": "VirtualMachineClusterPreference", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kubevirt", + "sub": "kubevirt", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject" + }, + "namespaced": false + }, + { + "alternatives": [], + "name": "io.kubevirt.instancetype.v1beta1.VirtualMachineInstancetype", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "description": "Required spec describing the instancetype", + "required": [ + "cpu", + "memory" + ], + "properties": { + "annotations": { + "description": "Optionally defines the required Annotations to be used by the instance type and applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "cpu": { + "description": "Required CPU related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "dedicatedCPUPlacement": { + "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", + "type": "boolean" + }, + "guest": { + "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", + "type": "integer", + "format": "int32" + }, + "isolateEmulatorThread": { + "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "type": "boolean" + }, + "model": { + "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", + "type": "string" + }, + "numa": { + "description": "NUMA allows specifying settings for the guest NUMA topology", + "type": "object", + "properties": { + "guestMappingPassthrough": { + "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", + "type": "object" + } + } + }, + "realtime": { + "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "type": "object", + "properties": { + "mask": { + "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "type": "string" + } + } + } + } + }, + "gpus": { + "description": "Optionally defines any GPU devices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "type": "string" + }, + "name": { + "description": "Name of the GPU device as exposed by a device plugin", + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + }, + "virtualGPUOptions": { + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "hostDevices": { + "description": "Optionally defines any HostDevices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", + "type": "string" + }, + "name": { + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "ioThreadsPolicy": { + "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", + "type": "string" + }, + "launchSecurity": { + "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", + "type": "object", + "properties": { + "sev": { + "description": "AMD Secure Encrypted Virtualization (SEV).", + "type": "object", + "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, + "policy": { + "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + "type": "object", + "properties": { + "encryptedState": { + "description": "SEV-ES is required. Defaults to false.", + "type": "boolean" + } + } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" + } + } + } + } + }, + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Required amount of memory which is visible inside the guest OS.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "hugepages": { + "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", + "type": "object", + "properties": { + "pageSize": { + "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", + "type": "string" + } + } + }, + "overcommitPercent": { + "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", + "type": "integer", + "maximum": 100, + "minimum": 0 + } + } + }, + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ \n NodeSelector is the name of the custom node selector for the instancetype.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler. \n SchedulerName is the name of the custom K8s scheduler for the instancetype.", + "type": "string" + } + } + }, + "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" + } + }, + "description": "VirtualMachineInstancetype resource contains quantitative and resource related VirtualMachine configuration that can be used by multiple VirtualMachine resources.", + "type": "object", + "required": [ + "spec" + ], + "x-kubernetes-group-version-kind": [ + { + "group": "instancetype.kubevirt.io", + "kind": "VirtualMachineInstancetype", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "virtualmachineinstancetypes.instancetype.kubevirt.io" + }, + "spec": { + "group": "instancetype.kubevirt.io", + "names": { + "plural": "virtualmachineinstancetypes", + "singular": "virtualmachineinstancetype", + "shortNames": [ + "vminstancetype", + "vminstancetypes", + "vmf", + "vmfs" + ], + "kind": "VirtualMachineInstancetype", + "listKind": "VirtualMachineInstancetypeList", + "categories": [ + "all" + ] + }, + "scope": "Namespaced", + "versions": [ { - "name": "v1beta1", + "name": "v1alpha1", "served": true, - "storage": true, + "storage": false, + "deprecated": true, + "deprecationWarning": "instancetype.kubevirt.io/v1alpha1 VirtualMachineInstancetypes is now deprecated and will be removed in v1.", "schema": { "openAPIV3Schema": { - "description": "VirtualMachineClusterPreference is a cluster scoped version of the VirtualMachinePreference resource.", + "description": "VirtualMachineInstancetype resource contains quantitative and resource related VirtualMachine configuration that can be used by multiple VirtualMachine resources.", "type": "object", "required": [ "spec" @@ -46681,901 +50309,490 @@ "type": "object" }, "spec": { - "description": "Required spec describing the preferences", + "description": "Required spec describing the instancetype", "type": "object", + "required": [ + "cpu", + "memory" + ], "properties": { - "clock": { - "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", + "annotations": { + "description": "Optionally defines the required Annotations to be used by the instance type and applied to the VirtualMachineInstance", "type": "object", - "properties": { - "preferredClockOffset": { - "description": "ClockOffset allows specifying the UTC offset or the timezone of the guest clock.", - "type": "object", - "properties": { - "timezone": { - "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", - "type": "string" - }, - "utc": { - "description": "UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.", - "type": "object", - "properties": { - "offsetSeconds": { - "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", - "type": "integer" - } - } - } - } - }, - "preferredTimer": { - "description": "Timer specifies whih timers are attached to the vmi.", - "type": "object", - "properties": { - "hpet": { - "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", - "type": "string" - } - } - }, - "hyperv": { - "description": "Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - } - }, - "kvm": { - "description": "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - } - }, - "pit": { - "description": "PIT (Programmable Interval Timer) - a timer with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", - "type": "string" - } - } - }, - "rtc": { - "description": "RTC (Real Time Clock) - a continuously running timer with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", - "type": "string" - }, - "track": { - "description": "Track the guest or the wall clock.", - "type": "string" - } - } - } - } - } + "additionalProperties": { + "type": "string" } }, "cpu": { - "description": "CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredCPUFeatures": { - "description": "PreferredCPUFeatures optionally defines a slice of preferred CPU features.", - "type": "array", - "items": { - "description": "CPUFeature allows specifying a CPU feature.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name of the CPU feature", - "type": "string" - }, - "policy": { - "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", - "type": "string" - } - } - } - }, - "preferredCPUTopology": { - "description": "PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.", - "type": "string" - } - } - }, - "devices": { - "description": "Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec", + "description": "Required CPU related attributes of the instancetype.", "type": "object", + "required": [ + "guest" + ], "properties": { - "preferredAutoattachGraphicsDevice": { - "description": "PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice", - "type": "boolean" - }, - "preferredAutoattachInputDevice": { - "description": "PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice", - "type": "boolean" - }, - "preferredAutoattachMemBalloon": { - "description": "PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon", - "type": "boolean" - }, - "preferredAutoattachPodInterface": { - "description": "PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface", - "type": "boolean" - }, - "preferredAutoattachSerialConsole": { - "description": "PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole", - "type": "boolean" - }, - "preferredBlockMultiQueue": { - "description": "PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.", - "type": "boolean" - }, - "preferredCdromBus": { - "description": "PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.", - "type": "string" - }, - "preferredDisableHotplug": { - "description": "PreferredDisableHotplug optionally defines the preferred value of DisableHotplug", - "type": "boolean" - }, - "preferredDiskBlockSize": { - "description": "PreferredBlockSize optionally defines the block size of Disk devices.", - "type": "object", - "properties": { - "custom": { - "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", - "type": "object", - "required": [ - "logical", - "physical" - ], - "properties": { - "logical": { - "type": "integer" - }, - "physical": { - "type": "integer" - } - } - }, - "matchVolume": { - "description": "Represents if a feature is enabled or disabled.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "preferredDiskBus": { - "description": "PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.", - "type": "string" - }, - "preferredDiskCache": { - "description": "PreferredCache optionally defines the DriverCache to be used by Disk devices.", - "type": "string" - }, - "preferredDiskDedicatedIoThread": { - "description": "PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.", + "dedicatedCPUPlacement": { + "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", "type": "boolean" }, - "preferredDiskIO": { - "description": "PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.", - "type": "string" - }, - "preferredInputBus": { - "description": "PreferredInputBus optionally defines the preferred bus for Input devices.", - "type": "string" - }, - "preferredInputType": { - "description": "PreferredInputType optionally defines the preferred type for Input devices.", - "type": "string" - }, - "preferredInterfaceMasquerade": { - "description": "PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.", - "type": "object" - }, - "preferredInterfaceModel": { - "description": "PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.", - "type": "string" - }, - "preferredLunBus": { - "description": "PreferredLunBus optionally defines the preferred bus for Lun Disk devices.", - "type": "string" + "guest": { + "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", + "type": "integer", + "format": "int32" }, - "preferredNetworkInterfaceMultiQueue": { - "description": "PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.", + "isolateEmulatorThread": { + "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", "type": "boolean" }, - "preferredRng": { - "description": "PreferredRng optionally defines the preferred rng device to be used.", - "type": "object" - }, - "preferredSoundModel": { - "description": "PreferredSoundModel optionally defines the preferred model for Sound devices.", + "model": { + "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", "type": "string" }, - "preferredTPM": { - "description": "PreferredTPM optionally defines the preferred TPM device to be used.", + "numa": { + "description": "NUMA allows specifying settings for the guest NUMA topology", "type": "object", "properties": { - "persistent": { - "description": "Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false", - "type": "boolean" + "guestMappingPassthrough": { + "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", + "type": "object" } } }, - "preferredUseVirtioTransitional": { - "description": "PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional", - "type": "boolean" - }, - "preferredVirtualGPUOptions": { - "description": "PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions", + "realtime": { + "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", "type": "object", "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } + "mask": { + "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "type": "string" } } } } }, - "features": { - "description": "Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredAcpi": { - "description": "PreferredAcpi optionally enables the ACPI feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "preferredApic": { - "description": "PreferredApic optionally enables and configures the APIC feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "endOfInterrupt": { - "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", - "type": "boolean" - } - } - }, - "preferredHyperv": { - "description": "PreferredHyperv optionally enables and configures HyperV features", - "type": "object", - "properties": { - "evmcs": { - "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "frequencies": { - "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "ipi": { - "description": "IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "reenlightenment": { - "description": "Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "relaxed": { - "description": "Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "reset": { - "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "runtime": { - "description": "Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "spinlocks": { - "description": "Spinlocks allows to configure the spinlock retry attempts.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "spinlocks": { - "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", - "type": "integer", - "format": "int32" - } - } - }, - "synic": { - "description": "SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "synictimer": { - "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.", - "type": "object", - "properties": { - "direct": { - "description": "Represents if a feature is enabled or disabled.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "enabled": { - "type": "boolean" - } - } - }, - "tlbflush": { - "description": "TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "vapic": { - "description": "VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "vendorid": { - "description": "VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "vendorid": { - "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", - "type": "string" - } - } - }, - "vpindex": { - "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "gpus": { + "description": "Optionally defines any GPU devices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "type": "string" + }, + "name": { + "description": "Name of the GPU device as exposed by a device plugin", + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + }, + "virtualGPUOptions": { + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } } } } } - }, - "preferredKvm": { - "description": "PreferredKvm optionally enables and configures KVM features", - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "preferredPvspinlock": { - "description": "PreferredPvspinlock optionally enables the Pvspinlock feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "preferredSmm": { - "description": "PreferredSmm optionally enables the SMM feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "firmware": { - "description": "Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredUseBios": { - "description": "PreferredUseBios optionally enables BIOS", - "type": "boolean" - }, - "preferredUseBiosSerial": { - "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled.", - "type": "boolean" - }, - "preferredUseEfi": { - "description": "PreferredUseEfi optionally enables EFI", - "type": "boolean" - }, - "preferredUseSecureBoot": { - "description": "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled.", - "type": "boolean" } - } + }, + "x-kubernetes-list-type": "atomic" }, - "machine": { - "description": "Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredMachineType": { - "description": "PreferredMachineType optionally defines the preferred machine type to use.", - "type": "string" + "hostDevices": { + "description": "Optionally defines any HostDevices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", + "type": "string" + }, + "name": { + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + } } - } + }, + "x-kubernetes-list-type": "atomic" }, - "preferredSubdomain": { - "description": "Subdomain of the VirtualMachineInstance", + "ioThreadsPolicy": { + "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", "type": "string" }, - "preferredTerminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "requirements": { - "description": "Requirements defines the minium amount of instance type defined resources required by a set of preferences", + "launchSecurity": { + "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", "type": "object", "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", + "sev": { + "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", - "required": [ - "guest" - ], "properties": { - "guest": { - "description": "Minimal number of vCPUs required by the preference.", - "type": "integer", - "format": "int32" + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, + "policy": { + "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + "type": "object", + "properties": { + "encryptedState": { + "description": "SEV-ES is required. Defaults to false.", + "type": "boolean" + } + } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } + } + } + }, + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Required amount of memory which is visible inside the guest OS.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", + "hugepages": { + "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", "type": "object", - "required": [ - "guest" - ], "properties": { - "guest": { - "description": "Minimal amount of memory required by the preference.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true + "pageSize": { + "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", + "type": "string" } } + }, + "overcommitPercent": { + "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", + "type": "integer", + "maximum": 100, + "minimum": 0 } } }, - "volumes": { - "description": "Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec", + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ \n NodeSelector is the name of the custom node selector for the instancetype.", "type": "object", - "properties": { - "preferredStorageClassName": { - "description": "PreffereedStorageClassName optionally defines the preferred storageClass", - "type": "string" - } + "additionalProperties": { + "type": "string" } + }, + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler. \n SchedulerName is the name of the custom K8s scheduler for the instancetype.", + "type": "string" } } } } } } - } - ], - "conversion": {} - }, - "status": { - "conditions": [], - "acceptedNames": { - "plural": "virtualmachineclusterpreferences", - "singular": "virtualmachineclusterpreference", - "shortNames": [ - "vmcp", - "vmcps" - ], - "kind": "VirtualMachineClusterPreference", - "listKind": "VirtualMachineClusterPreferenceList" - }, - "storedVersions": [ - "v1beta1" - ] - } - }, - "short": "VirtualMachineClusterPreference", - "apiGroup": "instancetype.kubevirt.io", - "apiKind": "VirtualMachineClusterPreference", - "apiVersion": "v1beta1", - "readProperties": { - "spec": "spec" - }, - "writeProperties": { - "spec": "spec" - }, - "group": "kubevirt", - "sub": "kubevirt", - "listExcludes": [], - "readExcludes": [], - "simpleExcludes": [], - "gqlDefs": { - "metadata": "metadata!", - "spec": "JSONObject" - }, - "namespaced": false - }, - { - "alternatives": [], - "name": "io.kubevirt.instancetype.v1beta1.VirtualMachineInstancetype", - "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" - }, - "spec": { - "description": "Required spec describing the instancetype", - "type": "object", - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "dedicatedCPUPlacement": { - "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", - "type": "boolean" - }, - "guest": { - "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", - "type": "integer", - "format": "int32" - }, - "isolateEmulatorThread": { - "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", - "type": "boolean" - }, - "model": { - "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", - "type": "string" - }, - "numa": { - "description": "NUMA allows specifying settings for the guest NUMA topology", - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", - "type": "object", - "properties": { - "mask": { - "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", - "type": "string" - } - } - } - } - }, - "gpus": { - "description": "Optionally defines any GPU devices associated with the instancetype.", - "type": "array", - "items": { + }, + { + "name": "v1alpha2", + "served": true, + "storage": false, + "deprecated": true, + "deprecationWarning": "instancetype.kubevirt.io/v1alpha2 VirtualMachineInstancetypes is now deprecated and will be removed in v1.", + "schema": { + "openAPIV3Schema": { + "description": "VirtualMachineInstancetype resource contains quantitative and resource related VirtualMachine configuration that can be used by multiple VirtualMachine resources.", "type": "object", "required": [ - "deviceName", - "name" + "spec" ], "properties": { - "deviceName": { + "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" }, - "name": { - "description": "Name of the GPU device as exposed by a device plugin", + "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" }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" + "metadata": { + "type": "object" }, - "virtualGPUOptions": { + "spec": { + "description": "Required spec describing the instancetype", "type": "object", + "required": [ + "cpu", + "memory" + ], "properties": { - "display": { + "annotations": { + "description": "Optionally defines the required Annotations to be used by the instance type and applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "cpu": { + "description": "Required CPU related attributes of the instancetype.", "type": "object", + "required": [ + "guest" + ], "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "dedicatedCPUPlacement": { + "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", "type": "boolean" }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "guest": { + "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", + "type": "integer", + "format": "int32" + }, + "isolateEmulatorThread": { + "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "type": "boolean" + }, + "model": { + "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", + "type": "string" + }, + "numa": { + "description": "NUMA allows specifying settings for the guest NUMA topology", + "type": "object", + "properties": { + "guestMappingPassthrough": { + "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", + "type": "object" + } + } + }, + "realtime": { + "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "type": "object", + "properties": { + "mask": { + "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "type": "string" + } + } + } + } + }, + "gpus": { + "description": "Optionally defines any GPU devices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "type": "string" + }, + "name": { + "description": "Name of the GPU device as exposed by a device plugin", + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + }, + "virtualGPUOptions": { + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "hostDevices": { + "description": "Optionally defines any HostDevices associated with the instancetype.", + "type": "array", + "items": { + "type": "object", + "required": [ + "deviceName", + "name" + ], + "properties": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", + "type": "string" + }, + "name": { + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "ioThreadsPolicy": { + "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", + "type": "string" + }, + "launchSecurity": { + "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", + "type": "object", + "properties": { + "sev": { + "description": "AMD Secure Encrypted Virtualization (SEV).", + "type": "object", + "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, + "policy": { + "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + "type": "object", + "properties": { + "encryptedState": { + "description": "SEV-ES is required. Defaults to false.", + "type": "boolean" + } + } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" + } + } + } + } + }, + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Required amount of memory which is visible inside the guest OS.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "hugepages": { + "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", "type": "object", "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "pageSize": { + "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", + "type": "string" } } + }, + "overcommitPercent": { + "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", + "type": "integer", + "maximum": 100, + "minimum": 0 } } - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Optionally defines any HostDevices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "description": "DeviceName is the resource name of the host device exposed by a device plugin", - "type": "string" - }, - "name": { - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "ioThreadsPolicy": { - "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", - "type": "string" - }, - "launchSecurity": { - "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", - "type": "object", - "properties": { - "sev": { - "description": "AMD Secure Encrypted Virtualization (SEV).", - "type": "object", - "properties": { - "policy": { - "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", - "type": "object", - "properties": { - "encryptedState": { - "description": "SEV-ES is required. Defaults to false.", - "type": "boolean" + }, + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ \n NodeSelector is the name of the custom node selector for the instancetype.", + "type": "object", + "additionalProperties": { + "type": "string" } + }, + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler. \n SchedulerName is the name of the custom K8s scheduler for the instancetype.", + "type": "string" } } } } } - }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Required amount of memory which is visible inside the guest OS.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "hugepages": { - "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", - "type": "object", - "properties": { - "pageSize": { - "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", - "type": "string" - } - } - }, - "overcommitPercent": { - "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", - "type": "integer", - "maximum": 100, - "minimum": 0 - } - } } - } - } - }, - "description": "VirtualMachineInstancetype resource contains quantitative and resource related VirtualMachine configuration that can be used by multiple VirtualMachine resources.", - "type": "object", - "required": [ - "spec" - ], - "x-kubernetes-group-version-kind": [ - { - "group": "instancetype.kubevirt.io", - "kind": "VirtualMachineInstancetype", - "version": "v1beta1" - } - ] - }, - "crd": { - "metadata": { - "name": "virtualmachineinstancetypes.instancetype.kubevirt.io" - }, - "spec": { - "group": "instancetype.kubevirt.io", - "names": { - "plural": "virtualmachineinstancetypes", - "singular": "virtualmachineinstancetype", - "shortNames": [ - "vminstancetype", - "vminstancetypes", - "vmf", - "vmfs" - ], - "kind": "VirtualMachineInstancetype", - "listKind": "VirtualMachineInstancetypeList", - "categories": [ - "all" - ] - }, - "scope": "Namespaced", - "versions": [ + }, { - "name": "v1alpha1", + "name": "v1beta1", "served": true, - "storage": false, - "deprecated": true, - "deprecationWarning": "instancetype.kubevirt.io/v1alpha1 VirtualMachineInstancetypes is now deprecated and will be removed in v1.", + "storage": true, "schema": { "openAPIV3Schema": { "description": "VirtualMachineInstancetype resource contains quantitative and resource related VirtualMachine configuration that can be used by multiple VirtualMachine resources.", @@ -47603,6 +50820,13 @@ "memory" ], "properties": { + "annotations": { + "description": "Optionally defines the required Annotations to be used by the instance type and applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "cpu": { "description": "Required CPU related attributes of the instancetype.", "type": "object", @@ -47735,6 +50959,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -47744,6 +50976,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -47778,12 +51014,375 @@ "type": "string" } } - }, - "overcommitPercent": { - "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", - "type": "integer", - "maximum": 100, - "minimum": 0 + }, + "overcommitPercent": { + "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", + "type": "integer", + "maximum": 100, + "minimum": 0 + } + } + }, + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ \n NodeSelector is the name of the custom node selector for the instancetype.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler. \n SchedulerName is the name of the custom K8s scheduler for the instancetype.", + "type": "string" + } + } + } + } + } + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "virtualmachineinstancetypes", + "singular": "virtualmachineinstancetype", + "shortNames": [ + "vminstancetype", + "vminstancetypes", + "vmf", + "vmfs" + ], + "kind": "VirtualMachineInstancetype", + "listKind": "VirtualMachineInstancetypeList", + "categories": [ + "all" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "VirtualMachineInstancetype", + "apiGroup": "instancetype.kubevirt.io", + "apiKind": "VirtualMachineInstancetype", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kubevirt", + "sub": "kubevirt", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "io.kubevirt.instancetype.v1beta1.VirtualMachinePreference", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "description": "Required spec describing the preferences", + "properties": { + "annotations": { + "description": "Optionally defines preferred Annotations to be applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "clock": { + "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredClockOffset": { + "description": "ClockOffset allows specifying the UTC offset or the timezone of the guest clock.", + "type": "object", + "properties": { + "timezone": { + "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", + "type": "string" + }, + "utc": { + "description": "UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.", + "type": "object", + "properties": { + "offsetSeconds": { + "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", + "type": "integer" + } + } + } + } + }, + "preferredTimer": { + "description": "Timer specifies whih timers are attached to the vmi.", + "type": "object", + "properties": { + "hpet": { + "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", + "type": "string" + } + } + }, + "hyperv": { + "description": "Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + } + }, + "kvm": { + "description": "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + } + }, + "pit": { + "description": "PIT (Programmable Interval Timer) - a timer with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", + "type": "string" + } + } + }, + "rtc": { + "description": "RTC (Real Time Clock) - a continuously running timer with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", + "type": "string" + }, + "track": { + "description": "Track the guest or the wall clock.", + "type": "string" + } + } + } + } + } + } + }, + "cpu": { + "description": "CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredCPUFeatures": { + "description": "PreferredCPUFeatures optionally defines a slice of preferred CPU features.", + "type": "array", + "items": { + "description": "CPUFeature allows specifying a CPU feature.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name of the CPU feature", + "type": "string" + }, + "policy": { + "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", + "type": "string" + } + } + } + }, + "preferredCPUTopology": { + "description": "PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.", + "type": "string" + } + } + }, + "devices": { + "description": "Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredAutoattachGraphicsDevice": { + "description": "PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice", + "type": "boolean" + }, + "preferredAutoattachInputDevice": { + "description": "PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice", + "type": "boolean" + }, + "preferredAutoattachMemBalloon": { + "description": "PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon", + "type": "boolean" + }, + "preferredAutoattachPodInterface": { + "description": "PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface", + "type": "boolean" + }, + "preferredAutoattachSerialConsole": { + "description": "PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole", + "type": "boolean" + }, + "preferredBlockMultiQueue": { + "description": "PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.", + "type": "boolean" + }, + "preferredCdromBus": { + "description": "PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.", + "type": "string" + }, + "preferredDisableHotplug": { + "description": "PreferredDisableHotplug optionally defines the preferred value of DisableHotplug", + "type": "boolean" + }, + "preferredDiskBlockSize": { + "description": "PreferredBlockSize optionally defines the block size of Disk devices.", + "type": "object", + "properties": { + "custom": { + "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", + "type": "object", + "required": [ + "logical", + "physical" + ], + "properties": { + "logical": { + "type": "integer" + }, + "physical": { + "type": "integer" + } + } + }, + "matchVolume": { + "description": "Represents if a feature is enabled or disabled.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + }, + "preferredDiskBus": { + "description": "PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.", + "type": "string" + }, + "preferredDiskCache": { + "description": "PreferredCache optionally defines the DriverCache to be used by Disk devices.", + "type": "string" + }, + "preferredDiskDedicatedIoThread": { + "description": "PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.", + "type": "boolean" + }, + "preferredDiskIO": { + "description": "PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.", + "type": "string" + }, + "preferredInputBus": { + "description": "PreferredInputBus optionally defines the preferred bus for Input devices.", + "type": "string" + }, + "preferredInputType": { + "description": "PreferredInputType optionally defines the preferred type for Input devices.", + "type": "string" + }, + "preferredInterfaceMasquerade": { + "description": "PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.", + "type": "object" + }, + "preferredInterfaceModel": { + "description": "PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.", + "type": "string" + }, + "preferredLunBus": { + "description": "PreferredLunBus optionally defines the preferred bus for Lun Disk devices.", + "type": "string" + }, + "preferredNetworkInterfaceMultiQueue": { + "description": "PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.", + "type": "boolean" + }, + "preferredRng": { + "description": "PreferredRng optionally defines the preferred rng device to be used.", + "type": "object" + }, + "preferredSoundModel": { + "description": "PreferredSoundModel optionally defines the preferred model for Sound devices.", + "type": "string" + }, + "preferredTPM": { + "description": "PreferredTPM optionally defines the preferred TPM device to be used.", + "type": "object", + "properties": { + "persistent": { + "description": "Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false", + "type": "boolean" + } + } + }, + "preferredUseVirtioTransitional": { + "description": "PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional", + "type": "boolean" + }, + "preferredVirtualGPUOptions": { + "description": "PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions", + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } } } } @@ -47791,238 +51390,385 @@ } } } - } - }, - { - "name": "v1alpha2", - "served": true, - "storage": false, - "deprecated": true, - "deprecationWarning": "instancetype.kubevirt.io/v1alpha2 VirtualMachineInstancetypes is now deprecated and will be removed in v1.", - "schema": { - "openAPIV3Schema": { - "description": "VirtualMachineInstancetype resource contains quantitative and resource related VirtualMachine configuration that can be used by multiple VirtualMachine resources.", - "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" - }, - "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": "Required spec describing the instancetype", - "type": "object", - "required": [ - "cpu", - "memory" - ], - "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "dedicatedCPUPlacement": { - "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", - "type": "boolean" - }, - "guest": { - "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", - "type": "integer", - "format": "int32" - }, - "isolateEmulatorThread": { - "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", - "type": "boolean" - }, - "model": { - "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", - "type": "string" - }, - "numa": { - "description": "NUMA allows specifying settings for the guest NUMA topology", - "type": "object", - "properties": { - "guestMappingPassthrough": { - "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", - "type": "object" - } - } - }, - "realtime": { - "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", - "type": "object", - "properties": { - "mask": { - "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", - "type": "string" - } - } - } + }, + "features": { + "description": "Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredAcpi": { + "description": "PreferredAcpi optionally enables the ACPI feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "preferredApic": { + "description": "PreferredApic optionally enables and configures the APIC feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "endOfInterrupt": { + "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", + "type": "boolean" + } + } + }, + "preferredHyperv": { + "description": "PreferredHyperv optionally enables and configures HyperV features", + "type": "object", + "properties": { + "evmcs": { + "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" } - }, - "gpus": { - "description": "Optionally defines any GPU devices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "type": "string" - }, - "name": { - "description": "Name of the GPU device as exposed by a device plugin", - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - }, - "virtualGPUOptions": { - "type": "object", - "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - } - } - } - } + } + }, + "frequencies": { + "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "ipi": { + "description": "IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "reenlightenment": { + "description": "Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "relaxed": { + "description": "Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "reset": { + "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "runtime": { + "description": "Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "spinlocks": { + "description": "Spinlocks allows to configure the spinlock retry attempts.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Optionally defines any HostDevices associated with the instancetype.", - "type": "array", - "items": { + "spinlocks": { + "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", + "type": "integer", + "format": "int32" + } + } + }, + "synic": { + "description": "SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "synictimer": { + "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.", + "type": "object", + "properties": { + "direct": { + "description": "Represents if a feature is enabled or disabled.", "type": "object", - "required": [ - "deviceName", - "name" - ], "properties": { - "deviceName": { - "description": "DeviceName is the resource name of the host device exposed by a device plugin", - "type": "string" - }, - "name": { - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" } } }, - "x-kubernetes-list-type": "atomic" - }, - "ioThreadsPolicy": { - "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", - "type": "string" - }, - "launchSecurity": { - "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", - "type": "object", - "properties": { - "sev": { - "description": "AMD Secure Encrypted Virtualization (SEV).", - "type": "object", - "properties": { - "policy": { - "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", - "type": "object", - "properties": { - "encryptedState": { - "description": "SEV-ES is required. Defaults to false.", - "type": "boolean" - } - } - } - } - } + "enabled": { + "type": "boolean" } - }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Required amount of memory which is visible inside the guest OS.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true - }, - "hugepages": { - "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", - "type": "object", - "properties": { - "pageSize": { - "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", - "type": "string" - } - } - }, - "overcommitPercent": { - "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", - "type": "integer", - "maximum": 100, - "minimum": 0 - } + } + }, + "tlbflush": { + "description": "TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "vapic": { + "description": "VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "vendorid": { + "description": "VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "vendorid": { + "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", + "type": "string" + } + } + }, + "vpindex": { + "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + }, + "preferredKvm": { + "description": "PreferredKvm optionally enables and configures KVM features", + "type": "object", + "properties": { + "hidden": { + "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", + "type": "boolean" + } + } + }, + "preferredPvspinlock": { + "description": "PreferredPvspinlock optionally enables the Pvspinlock feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "preferredSmm": { + "description": "PreferredSmm optionally enables the SMM feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + }, + "firmware": { + "description": "Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredUseBios": { + "description": "PreferredUseBios optionally enables BIOS", + "type": "boolean" + }, + "preferredUseBiosSerial": { + "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled.", + "type": "boolean" + }, + "preferredUseEfi": { + "description": "PreferredUseEfi optionally enables EFI", + "type": "boolean" + }, + "preferredUseSecureBoot": { + "description": "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled.", + "type": "boolean" + } + } + }, + "machine": { + "description": "Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredMachineType": { + "description": "PreferredMachineType optionally defines the preferred machine type to use.", + "type": "string" + } + } + }, + "preferSpreadSocketToCoreRatio": { + "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.", + "type": "integer", + "format": "int32" + }, + "preferredSubdomain": { + "description": "Subdomain of the VirtualMachineInstance", + "type": "string" + }, + "preferredTerminationGracePeriodSeconds": { + "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", + "type": "integer", + "format": "int64" + }, + "requirements": { + "description": "Requirements defines the minium amount of instance type defined resources required by a set of preferences", + "type": "object", + "properties": { + "cpu": { + "description": "Required CPU related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Minimal number of vCPUs required by the preference.", + "type": "integer", + "format": "int32" + } + } + }, + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Minimal amount of memory required by the preference.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" } - } + ] } } } } + }, + "volumes": { + "description": "Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec", + "type": "object", + "properties": { + "preferredStorageClassName": { + "description": "PreffereedStorageClassName optionally defines the preferred storageClass", + "type": "string" + } + } } - }, + } + }, + "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" + } + }, + "description": "VirtualMachinePreference resource contains optional preferences related to the VirtualMachine.", + "type": "object", + "required": [ + "spec" + ], + "x-kubernetes-group-version-kind": [ + { + "group": "instancetype.kubevirt.io", + "kind": "VirtualMachinePreference", + "version": "v1beta1" + } + ] + }, + "crd": { + "metadata": { + "name": "virtualmachinepreferences.instancetype.kubevirt.io" + }, + "spec": { + "group": "instancetype.kubevirt.io", + "names": { + "plural": "virtualmachinepreferences", + "singular": "virtualmachinepreference", + "shortNames": [ + "vmpref", + "vmprefs", + "vmp", + "vmps" + ], + "kind": "VirtualMachinePreference", + "listKind": "VirtualMachinePreferenceList", + "categories": [ + "all" + ] + }, + "scope": "Namespaced", + "versions": [ { - "name": "v1beta1", + "name": "v1alpha1", "served": true, - "storage": true, + "storage": false, + "deprecated": true, + "deprecationWarning": "instancetype.kubevirt.io/v1alpha1 VirtualMachinePreferences is now deprecated and will be removed in v1.", "schema": { "openAPIV3Schema": { - "description": "VirtualMachineInstancetype resource contains quantitative and resource related VirtualMachine configuration that can be used by multiple VirtualMachine resources.", + "description": "VirtualMachinePreference resource contains optional preferences related to the VirtualMachine.", "type": "object", "required": [ "spec" @@ -48040,906 +51786,636 @@ "type": "object" }, "spec": { - "description": "Required spec describing the instancetype", + "description": "Required spec describing the preferences", "type": "object", - "required": [ - "cpu", - "memory" - ], "properties": { + "annotations": { + "description": "Optionally defines preferred Annotations to be applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "clock": { + "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredClockOffset": { + "description": "ClockOffset allows specifying the UTC offset or the timezone of the guest clock.", + "type": "object", + "properties": { + "timezone": { + "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", + "type": "string" + }, + "utc": { + "description": "UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.", + "type": "object", + "properties": { + "offsetSeconds": { + "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", + "type": "integer" + } + } + } + } + }, + "preferredTimer": { + "description": "Timer specifies whih timers are attached to the vmi.", + "type": "object", + "properties": { + "hpet": { + "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", + "type": "string" + } + } + }, + "hyperv": { + "description": "Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + } + }, + "kvm": { + "description": "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + } + }, + "pit": { + "description": "PIT (Programmable Interval Timer) - a timer with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", + "type": "string" + } + } + }, + "rtc": { + "description": "RTC (Real Time Clock) - a continuously running timer with periodic interrupts.", + "type": "object", + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", + "type": "string" + }, + "track": { + "description": "Track the guest or the wall clock.", + "type": "string" + } + } + } + } + } + } + }, "cpu": { - "description": "Required CPU related attributes of the instancetype.", + "description": "CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec", "type": "object", - "required": [ - "guest" - ], "properties": { - "dedicatedCPUPlacement": { - "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", + "preferredCPUFeatures": { + "description": "PreferredCPUFeatures optionally defines a slice of preferred CPU features.", + "type": "array", + "items": { + "description": "CPUFeature allows specifying a CPU feature.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name of the CPU feature", + "type": "string" + }, + "policy": { + "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", + "type": "string" + } + } + } + }, + "preferredCPUTopology": { + "description": "PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.", + "type": "string" + } + } + }, + "devices": { + "description": "Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredAutoattachGraphicsDevice": { + "description": "PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice", "type": "boolean" }, - "guest": { - "description": "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology attribute of CPUPreferences that itself defaults to PreferSockets.", - "type": "integer", - "format": "int32" + "preferredAutoattachInputDevice": { + "description": "PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice", + "type": "boolean" }, - "isolateEmulatorThread": { - "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "preferredAutoattachMemBalloon": { + "description": "PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon", "type": "boolean" }, - "model": { - "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", + "preferredAutoattachPodInterface": { + "description": "PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface", + "type": "boolean" + }, + "preferredAutoattachSerialConsole": { + "description": "PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole", + "type": "boolean" + }, + "preferredBlockMultiQueue": { + "description": "PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.", + "type": "boolean" + }, + "preferredCdromBus": { + "description": "PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.", "type": "string" }, - "numa": { - "description": "NUMA allows specifying settings for the guest NUMA topology", + "preferredDisableHotplug": { + "description": "PreferredDisableHotplug optionally defines the preferred value of DisableHotplug", + "type": "boolean" + }, + "preferredDiskBlockSize": { + "description": "PreferredBlockSize optionally defines the block size of Disk devices.", "type": "object", "properties": { - "guestMappingPassthrough": { - "description": "GuestMappingPassthrough will create an efficient guest topology based on host CPUs exclusively assigned to a pod. The created topology ensures that memory and CPUs on the virtual numa nodes never cross boundaries of host numa nodes.", - "type": "object" + "custom": { + "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", + "type": "object", + "required": [ + "logical", + "physical" + ], + "properties": { + "logical": { + "type": "integer" + }, + "physical": { + "type": "integer" + } + } + }, + "matchVolume": { + "description": "Represents if a feature is enabled or disabled.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } } } }, - "realtime": { - "description": "Realtime instructs the virt-launcher to tune the VMI for lower latency, optional for real time workloads", + "preferredDiskBus": { + "description": "PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.", + "type": "string" + }, + "preferredDiskCache": { + "description": "PreferredCache optionally defines the DriverCache to be used by Disk devices.", + "type": "string" + }, + "preferredDiskDedicatedIoThread": { + "description": "PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.", + "type": "boolean" + }, + "preferredDiskIO": { + "description": "PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.", + "type": "string" + }, + "preferredInputBus": { + "description": "PreferredInputBus optionally defines the preferred bus for Input devices.", + "type": "string" + }, + "preferredInputType": { + "description": "PreferredInputType optionally defines the preferred type for Input devices.", + "type": "string" + }, + "preferredInterfaceMasquerade": { + "description": "PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.", + "type": "object" + }, + "preferredInterfaceModel": { + "description": "PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.", + "type": "string" + }, + "preferredLunBus": { + "description": "PreferredLunBus optionally defines the preferred bus for Lun Disk devices.", + "type": "string" + }, + "preferredNetworkInterfaceMultiQueue": { + "description": "PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.", + "type": "boolean" + }, + "preferredRng": { + "description": "PreferredRng optionally defines the preferred rng device to be used.", + "type": "object" + }, + "preferredSoundModel": { + "description": "PreferredSoundModel optionally defines the preferred model for Sound devices.", + "type": "string" + }, + "preferredTPM": { + "description": "PreferredTPM optionally defines the preferred TPM device to be used.", "type": "object", "properties": { - "mask": { - "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", - "type": "string" + "persistent": { + "description": "Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false", + "type": "boolean" + } + } + }, + "preferredUseVirtioTransitional": { + "description": "PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional", + "type": "boolean" + }, + "preferredVirtualGPUOptions": { + "description": "PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions", + "type": "object", + "properties": { + "display": { + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } } } } } }, - "gpus": { - "description": "Optionally defines any GPU devices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "type": "string" - }, - "name": { - "description": "Name of the GPU device as exposed by a device plugin", - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - }, - "virtualGPUOptions": { - "type": "object", - "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } + "features": { + "description": "Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredAcpi": { + "description": "PreferredAcpi optionally enables the ACPI feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "preferredApic": { + "description": "PreferredApic optionally enables and configures the APIC feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "endOfInterrupt": { + "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", + "type": "boolean" + } + } + }, + "preferredHyperv": { + "description": "PreferredHyperv optionally enables and configures HyperV features", + "type": "object", + "properties": { + "evmcs": { + "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "frequencies": { + "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "ipi": { + "description": "IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "reenlightenment": { + "description": "Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "relaxed": { + "description": "Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "reset": { + "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "runtime": { + "description": "Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "spinlocks": { + "description": "Spinlocks allows to configure the spinlock retry attempts.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "spinlocks": { + "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", + "type": "integer", + "format": "int32" + } + } + }, + "synic": { + "description": "SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "synictimer": { + "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.", + "type": "object", + "properties": { + "direct": { + "description": "Represents if a feature is enabled or disabled.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" } } + }, + "enabled": { + "type": "boolean" } } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "hostDevices": { - "description": "Optionally defines any HostDevices associated with the instancetype.", - "type": "array", - "items": { - "type": "object", - "required": [ - "deviceName", - "name" - ], - "properties": { - "deviceName": { - "description": "DeviceName is the resource name of the host device exposed by a device plugin", - "type": "string" - }, - "name": { - "type": "string" - }, - "tag": { - "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "ioThreadsPolicy": { - "description": "Optionally defines the IOThreadsPolicy to be used by the instancetype.", - "type": "string" - }, - "launchSecurity": { - "description": "Optionally defines the LaunchSecurity to be used by the instancetype.", - "type": "object", - "properties": { - "sev": { - "description": "AMD Secure Encrypted Virtualization (SEV).", - "type": "object", - "properties": { - "policy": { - "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", + }, + "tlbflush": { + "description": "TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", "type": "object", "properties": { - "encryptedState": { - "description": "SEV-ES is required. Defaults to false.", + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", "type": "boolean" } } - } - } - } - } - }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Required amount of memory which is visible inside the guest OS.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true - }, - "hugepages": { - "description": "Optionally enables the use of hugepages for the VirtualMachineInstance instead of regular memory.", - "type": "object", - "properties": { - "pageSize": { - "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", - "type": "string" - } - } - }, - "overcommitPercent": { - "description": "OvercommitPercent is the percentage of the guest memory which will be overcommitted. This means that the VMIs parent pod (virt-launcher) will request less physical memory by a factor specified by the OvercommitPercent. Overcommits can lead to memory exhaustion, which in turn can lead to crashes. Use carefully. Defaults to 0", - "type": "integer", - "maximum": 100, - "minimum": 0 - } - } - } - } - } - } - } - } - } - ], - "conversion": {} - }, - "status": { - "conditions": [], - "acceptedNames": { - "plural": "virtualmachineinstancetypes", - "singular": "virtualmachineinstancetype", - "shortNames": [ - "vminstancetype", - "vminstancetypes", - "vmf", - "vmfs" - ], - "kind": "VirtualMachineInstancetype", - "listKind": "VirtualMachineInstancetypeList", - "categories": [ - "all" - ] - }, - "storedVersions": [ - "v1beta1" - ] - } - }, - "short": "VirtualMachineInstancetype", - "apiGroup": "instancetype.kubevirt.io", - "apiKind": "VirtualMachineInstancetype", - "apiVersion": "v1beta1", - "readProperties": { - "spec": "spec" - }, - "writeProperties": { - "spec": "spec" - }, - "group": "kubevirt", - "sub": "kubevirt", - "listExcludes": [], - "readExcludes": [], - "simpleExcludes": [], - "gqlDefs": { - "metadata": "metadata!", - "spec": "JSONObject" - }, - "namespaced": true - }, - { - "alternatives": [], - "name": "io.kubevirt.instancetype.v1beta1.VirtualMachinePreference", - "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" - }, - "spec": { - "description": "Required spec describing the preferences", - "type": "object", - "properties": { - "clock": { - "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredClockOffset": { - "description": "ClockOffset allows specifying the UTC offset or the timezone of the guest clock.", - "type": "object", - "properties": { - "timezone": { - "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", - "type": "string" - }, - "utc": { - "description": "UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.", - "type": "object", - "properties": { - "offsetSeconds": { - "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", - "type": "integer" - } - } - } - } - }, - "preferredTimer": { - "description": "Timer specifies whih timers are attached to the vmi.", - "type": "object", - "properties": { - "hpet": { - "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", - "type": "string" - } - } - }, - "hyperv": { - "description": "Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - } - }, - "kvm": { - "description": "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - } - }, - "pit": { - "description": "PIT (Programmable Interval Timer) - a timer with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", - "type": "string" - } - } - }, - "rtc": { - "description": "RTC (Real Time Clock) - a continuously running timer with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", - "type": "string" - }, - "track": { - "description": "Track the guest or the wall clock.", - "type": "string" - } - } - } - } - } - } - }, - "cpu": { - "description": "CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredCPUFeatures": { - "description": "PreferredCPUFeatures optionally defines a slice of preferred CPU features.", - "type": "array", - "items": { - "description": "CPUFeature allows specifying a CPU feature.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name of the CPU feature", - "type": "string" - }, - "policy": { - "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", - "type": "string" - } - } - } - }, - "preferredCPUTopology": { - "description": "PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.", - "type": "string" - } - } - }, - "devices": { - "description": "Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredAutoattachGraphicsDevice": { - "description": "PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice", - "type": "boolean" - }, - "preferredAutoattachInputDevice": { - "description": "PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice", - "type": "boolean" - }, - "preferredAutoattachMemBalloon": { - "description": "PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon", - "type": "boolean" - }, - "preferredAutoattachPodInterface": { - "description": "PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface", - "type": "boolean" - }, - "preferredAutoattachSerialConsole": { - "description": "PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole", - "type": "boolean" - }, - "preferredBlockMultiQueue": { - "description": "PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.", - "type": "boolean" - }, - "preferredCdromBus": { - "description": "PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.", - "type": "string" - }, - "preferredDisableHotplug": { - "description": "PreferredDisableHotplug optionally defines the preferred value of DisableHotplug", - "type": "boolean" - }, - "preferredDiskBlockSize": { - "description": "PreferredBlockSize optionally defines the block size of Disk devices.", - "type": "object", - "properties": { - "custom": { - "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", - "type": "object", - "required": [ - "logical", - "physical" - ], - "properties": { - "logical": { - "type": "integer" - }, - "physical": { - "type": "integer" - } - } - }, - "matchVolume": { - "description": "Represents if a feature is enabled or disabled.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "preferredDiskBus": { - "description": "PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.", - "type": "string" - }, - "preferredDiskCache": { - "description": "PreferredCache optionally defines the DriverCache to be used by Disk devices.", - "type": "string" - }, - "preferredDiskDedicatedIoThread": { - "description": "PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.", - "type": "boolean" - }, - "preferredDiskIO": { - "description": "PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.", - "type": "string" - }, - "preferredInputBus": { - "description": "PreferredInputBus optionally defines the preferred bus for Input devices.", - "type": "string" - }, - "preferredInputType": { - "description": "PreferredInputType optionally defines the preferred type for Input devices.", - "type": "string" - }, - "preferredInterfaceMasquerade": { - "description": "PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.", - "type": "object" - }, - "preferredInterfaceModel": { - "description": "PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.", - "type": "string" - }, - "preferredLunBus": { - "description": "PreferredLunBus optionally defines the preferred bus for Lun Disk devices.", - "type": "string" - }, - "preferredNetworkInterfaceMultiQueue": { - "description": "PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.", - "type": "boolean" - }, - "preferredRng": { - "description": "PreferredRng optionally defines the preferred rng device to be used.", - "type": "object" - }, - "preferredSoundModel": { - "description": "PreferredSoundModel optionally defines the preferred model for Sound devices.", - "type": "string" - }, - "preferredTPM": { - "description": "PreferredTPM optionally defines the preferred TPM device to be used.", - "type": "object", - "properties": { - "persistent": { - "description": "Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false", - "type": "boolean" - } - } - }, - "preferredUseVirtioTransitional": { - "description": "PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional", - "type": "boolean" - }, - "preferredVirtualGPUOptions": { - "description": "PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions", - "type": "object", - "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "vapic": { + "description": "VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "vendorid": { + "description": "VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "vendorid": { + "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", + "type": "string" + } + } + }, + "vpindex": { + "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + } + } + }, + "preferredKvm": { + "description": "PreferredKvm optionally enables and configures KVM features", + "type": "object", + "properties": { + "hidden": { + "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", + "type": "boolean" + } + } + }, + "preferredPvspinlock": { + "description": "PreferredPvspinlock optionally enables the Pvspinlock feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + } + }, + "preferredSmm": { + "description": "PreferredSmm optionally enables the SMM feature", + "type": "object", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } } } } - } - } - } - } - } - }, - "features": { - "description": "Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredAcpi": { - "description": "PreferredAcpi optionally enables the ACPI feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "preferredApic": { - "description": "PreferredApic optionally enables and configures the APIC feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "endOfInterrupt": { - "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", - "type": "boolean" - } - } - }, - "preferredHyperv": { - "description": "PreferredHyperv optionally enables and configures HyperV features", - "type": "object", - "properties": { - "evmcs": { - "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "frequencies": { - "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "ipi": { - "description": "IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "reenlightenment": { - "description": "Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "relaxed": { - "description": "Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "reset": { - "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "runtime": { - "description": "Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "spinlocks": { - "description": "Spinlocks allows to configure the spinlock retry attempts.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "spinlocks": { - "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", - "type": "integer", - "format": "int32" + }, + "firmware": { + "description": "Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredUseBios": { + "description": "PreferredUseBios optionally enables BIOS", + "type": "boolean" + }, + "preferredUseBiosSerial": { + "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled.", + "type": "boolean" + }, + "preferredUseEfi": { + "description": "PreferredUseEfi optionally enables EFI", + "type": "boolean" + }, + "preferredUseSecureBoot": { + "description": "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled.", + "type": "boolean" + } } - } - }, - "synic": { - "description": "SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + }, + "machine": { + "description": "Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec", + "type": "object", + "properties": { + "preferredMachineType": { + "description": "PreferredMachineType optionally defines the preferred machine type to use.", + "type": "string" + } } - } - }, - "synictimer": { - "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.", - "type": "object", - "properties": { - "direct": { - "description": "Represents if a feature is enabled or disabled.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + }, + "preferSpreadSocketToCoreRatio": { + "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.", + "type": "integer", + "format": "int32" + }, + "preferredSubdomain": { + "description": "Subdomain of the VirtualMachineInstance", + "type": "string" + }, + "preferredTerminationGracePeriodSeconds": { + "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", + "type": "integer", + "format": "int64" + }, + "requirements": { + "description": "Requirements defines the minium amount of instance type defined resources required by a set of preferences", + "type": "object", + "properties": { + "cpu": { + "description": "Required CPU related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Minimal number of vCPUs required by the preference.", + "type": "integer", + "format": "int32" + } + } + }, + "memory": { + "description": "Required Memory related attributes of the instancetype.", + "type": "object", + "required": [ + "guest" + ], + "properties": { + "guest": { + "description": "Minimal amount of memory required by the preference.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } } } - }, - "enabled": { - "type": "boolean" - } - } - }, - "tlbflush": { - "description": "TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "vapic": { - "description": "VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "vendorid": { - "description": "VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "vendorid": { - "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", - "type": "string" } - } - }, - "vpindex": { - "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + }, + "volumes": { + "description": "Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec", + "type": "object", + "properties": { + "preferredStorageClassName": { + "description": "PreffereedStorageClassName optionally defines the preferred storageClass", + "type": "string" + } } } } } - }, - "preferredKvm": { - "description": "PreferredKvm optionally enables and configures KVM features", - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "preferredPvspinlock": { - "description": "PreferredPvspinlock optionally enables the Pvspinlock feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "preferredSmm": { - "description": "PreferredSmm optionally enables the SMM feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "firmware": { - "description": "Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredUseBios": { - "description": "PreferredUseBios optionally enables BIOS", - "type": "boolean" - }, - "preferredUseBiosSerial": { - "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled.", - "type": "boolean" - }, - "preferredUseEfi": { - "description": "PreferredUseEfi optionally enables EFI", - "type": "boolean" - }, - "preferredUseSecureBoot": { - "description": "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled.", - "type": "boolean" - } - } - }, - "machine": { - "description": "Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredMachineType": { - "description": "PreferredMachineType optionally defines the preferred machine type to use.", - "type": "string" - } - } - }, - "preferredSubdomain": { - "description": "Subdomain of the VirtualMachineInstance", - "type": "string" - }, - "preferredTerminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "requirements": { - "description": "Requirements defines the minium amount of instance type defined resources required by a set of preferences", - "type": "object", - "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Minimal number of vCPUs required by the preference.", - "type": "integer", - "format": "int32" - } - } - }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Minimal amount of memory required by the preference.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - } - } - } - } - }, - "volumes": { - "description": "Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec", - "type": "object", - "properties": { - "preferredStorageClassName": { - "description": "PreffereedStorageClassName optionally defines the preferred storageClass", - "type": "string" } } } - } - } - }, - "description": "VirtualMachinePreference resource contains optional preferences related to the VirtualMachine.", - "type": "object", - "required": [ - "spec" - ], - "x-kubernetes-group-version-kind": [ - { - "group": "instancetype.kubevirt.io", - "kind": "VirtualMachinePreference", - "version": "v1beta1" - } - ] - }, - "crd": { - "metadata": { - "name": "virtualmachinepreferences.instancetype.kubevirt.io" - }, - "spec": { - "group": "instancetype.kubevirt.io", - "names": { - "plural": "virtualmachinepreferences", - "singular": "virtualmachinepreference", - "shortNames": [ - "vmpref", - "vmprefs", - "vmp", - "vmps" - ], - "kind": "VirtualMachinePreference", - "listKind": "VirtualMachinePreferenceList", - "categories": [ - "all" - ] - }, - "scope": "Namespaced", - "versions": [ + }, { - "name": "v1alpha1", + "name": "v1alpha2", "served": true, "storage": false, "deprecated": true, - "deprecationWarning": "instancetype.kubevirt.io/v1alpha1 VirtualMachinePreferences is now deprecated and will be removed in v1.", + "deprecationWarning": "instancetype.kubevirt.io/v1alpha2 VirtualMachinePreferences is now deprecated and will be removed in v1.", "schema": { "openAPIV3Schema": { "description": "VirtualMachinePreference resource contains optional preferences related to the VirtualMachine.", @@ -48963,6 +52439,13 @@ "description": "Required spec describing the preferences", "type": "object", "properties": { + "annotations": { + "description": "Optionally defines preferred Annotations to be applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "clock": { "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", "type": "object", @@ -49505,6 +52988,11 @@ } } }, + "preferSpreadSocketToCoreRatio": { + "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.", + "type": "integer", + "format": "int32" + }, "preferredSubdomain": { "description": "Subdomain of the VirtualMachineInstance", "type": "string" @@ -49573,11 +53061,9 @@ } }, { - "name": "v1alpha2", + "name": "v1beta1", "served": true, - "storage": false, - "deprecated": true, - "deprecationWarning": "instancetype.kubevirt.io/v1alpha2 VirtualMachinePreferences is now deprecated and will be removed in v1.", + "storage": true, "schema": { "openAPIV3Schema": { "description": "VirtualMachinePreference resource contains optional preferences related to the VirtualMachine.", @@ -49601,6 +53087,13 @@ "description": "Required spec describing the preferences", "type": "object", "properties": { + "annotations": { + "description": "Optionally defines preferred Annotations to be applied to the VirtualMachineInstance", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "clock": { "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", "type": "object", @@ -50143,6 +53636,11 @@ } } }, + "preferSpreadSocketToCoreRatio": { + "description": "PreferSpreadSocketToCoreRatio defines the ratio to spread vCPUs between cores and sockets, it defaults to 2.", + "type": "integer", + "format": "int32" + }, "preferredSubdomain": { "description": "Subdomain of the VirtualMachineInstance", "type": "string" @@ -50209,14 +53707,158 @@ } } } - }, + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "virtualmachinepreferences", + "singular": "virtualmachinepreference", + "shortNames": [ + "vmpref", + "vmprefs", + "vmp", + "vmps" + ], + "kind": "VirtualMachinePreference", + "listKind": "VirtualMachinePreferenceList", + "categories": [ + "all" + ] + }, + "storedVersions": [ + "v1beta1" + ] + } + }, + "short": "VirtualMachinePreference", + "apiGroup": "instancetype.kubevirt.io", + "apiKind": "VirtualMachinePreference", + "apiVersion": "v1beta1", + "readProperties": { + "spec": "spec" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kubevirt", + "sub": "kubevirt", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "io.kubevirt.migrations.v1alpha1.MigrationPolicy", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "required": [ + "selectors" + ], + "properties": { + "allowAutoConverge": { + "type": "boolean" + }, + "allowPostCopy": { + "type": "boolean" + }, + "bandwidthPerMigration": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "completionTimeoutPerGiB": { + "type": "integer", + "format": "int64" + }, + "selectors": { + "type": "object", + "properties": { + "namespaceSelector": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "virtualMachineInstanceSelector": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + } + } + }, + "status": { + "type": "object", + "nullable": true + }, + "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" + } + }, + "description": "MigrationPolicy holds migration policy (i.e. configurations) to apply to a VM or group of VMs", + "type": "object", + "required": [ + "spec" + ], + "x-kubernetes-group-version-kind": [ + { + "group": "migrations.kubevirt.io", + "kind": "MigrationPolicy", + "version": "v1alpha1" + } + ] + }, + "crd": { + "metadata": { + "name": "migrationpolicies.migrations.kubevirt.io" + }, + "spec": { + "group": "migrations.kubevirt.io", + "names": { + "plural": "migrationpolicies", + "singular": "migrationpolicy", + "kind": "MigrationPolicy", + "listKind": "MigrationPolicyList", + "categories": [ + "all" + ] + }, + "scope": "Cluster", + "versions": [ { - "name": "v1beta1", + "name": "v1alpha1", "served": true, "storage": true, "schema": { "openAPIV3Schema": { - "description": "VirtualMachinePreference resource contains optional preferences related to the VirtualMachine.", + "description": "MigrationPolicy holds migration policy (i.e. configurations) to apply to a VM or group of VMs", "type": "object", "required": [ "spec" @@ -50234,963 +53876,839 @@ "type": "object" }, "spec": { - "description": "Required spec describing the preferences", "type": "object", + "required": [ + "selectors" + ], "properties": { - "clock": { - "description": "Clock optionally defines preferences associated with the Clock attribute of a VirtualMachineInstance DomainSpec", + "allowAutoConverge": { + "type": "boolean" + }, + "allowPostCopy": { + "type": "boolean" + }, + "bandwidthPerMigration": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + }, + "completionTimeoutPerGiB": { + "type": "integer", + "format": "int64" + }, + "selectors": { "type": "object", "properties": { - "preferredClockOffset": { - "description": "ClockOffset allows specifying the UTC offset or the timezone of the guest clock.", + "namespaceSelector": { "type": "object", - "properties": { - "timezone": { - "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", - "type": "string" - }, - "utc": { - "description": "UTC sets the guest clock to UTC on each boot. If an offset is specified, guest changes to the clock will be kept during reboots and are not reset.", - "type": "object", - "properties": { - "offsetSeconds": { - "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", - "type": "integer" - } - } - } + "additionalProperties": { + "type": "string" } }, - "preferredTimer": { - "description": "Timer specifies whih timers are attached to the vmi.", + "virtualMachineInstanceSelector": { "type": "object", - "properties": { - "hpet": { - "description": "HPET (High Precision Event Timer) - multiple timers with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", - "type": "string" - } - } - }, - "hyperv": { - "description": "Hyperv (Hypervclock) - lets guests read the host’s wall clock time (paravirtualized). For windows guests.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - } - }, - "kvm": { - "description": "KVM \t(KVM clock) - lets guests read the host’s wall clock time (paravirtualized). For linux guests.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - } - } - }, - "pit": { - "description": "PIT (Programmable Interval Timer) - a timer with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", - "type": "string" - } - } - }, - "rtc": { - "description": "RTC (Real Time Clock) - a continuously running timer with periodic interrupts.", - "type": "object", - "properties": { - "present": { - "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", - "type": "boolean" - }, - "tickPolicy": { - "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", - "type": "string" - }, - "track": { - "description": "Track the guest or the wall clock.", - "type": "string" - } - } - } + "additionalProperties": { + "type": "string" } } } + } + } + }, + "status": { + "type": "object", + "nullable": true + } + } + } + }, + "subresources": { + "status": {} + } + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "migrationpolicies", + "singular": "migrationpolicy", + "kind": "MigrationPolicy", + "listKind": "MigrationPolicyList", + "categories": [ + "all" + ] + }, + "storedVersions": [ + "v1alpha1" + ] + } + }, + "short": "MigrationPolicy", + "apiGroup": "migrations.kubevirt.io", + "apiKind": "MigrationPolicy", + "apiVersion": "v1alpha1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kubevirt", + "sub": "kubevirt", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": false + }, + { + "alternatives": [], + "name": "io.kubevirt.pool.v1alpha1.VirtualMachinePool", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "required": [ + "selector", + "virtualMachineTemplate" + ], + "properties": { + "paused": { + "description": "Indicates that the pool is paused.", + "type": "boolean" + }, + "replicas": { + "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", + "type": "integer", + "format": "int32" + }, + "selector": { + "description": "Label selector for pods. Existing Poolss whose pods are selected by this will be the ones affected by this deployment.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string" }, - "cpu": { - "description": "CPU optionally defines preferences associated with the CPU attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredCPUFeatures": { - "description": "PreferredCPUFeatures optionally defines a slice of preferred CPU features.", - "type": "array", - "items": { - "description": "CPUFeature allows specifying a CPU feature.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name of the CPU feature", - "type": "string" - }, - "policy": { - "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", - "type": "string" - } - } - } - }, - "preferredCPUTopology": { - "description": "PreferredCPUTopology optionally defines the preferred guest visible CPU topology, defaults to PreferSockets.", - "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" }, - "devices": { - "description": "Devices optionally defines preferences associated with the Devices attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredAutoattachGraphicsDevice": { - "description": "PreferredAutoattachGraphicsDevice optionally defines the preferred value of AutoattachGraphicsDevice", - "type": "boolean" - }, - "preferredAutoattachInputDevice": { - "description": "PreferredAutoattachInputDevice optionally defines the preferred value of AutoattachInputDevice", - "type": "boolean" - }, - "preferredAutoattachMemBalloon": { - "description": "PreferredAutoattachMemBalloon optionally defines the preferred value of AutoattachMemBalloon", - "type": "boolean" - }, - "preferredAutoattachPodInterface": { - "description": "PreferredAutoattachPodInterface optionally defines the preferred value of AutoattachPodInterface", - "type": "boolean" - }, - "preferredAutoattachSerialConsole": { - "description": "PreferredAutoattachSerialConsole optionally defines the preferred value of AutoattachSerialConsole", - "type": "boolean" - }, - "preferredBlockMultiQueue": { - "description": "PreferredBlockMultiQueue optionally enables the vhost multiqueue feature for virtio disks.", - "type": "boolean" - }, - "preferredCdromBus": { - "description": "PreferredCdromBus optionally defines the preferred bus for Cdrom Disk devices.", - "type": "string" - }, - "preferredDisableHotplug": { - "description": "PreferredDisableHotplug optionally defines the preferred value of DisableHotplug", - "type": "boolean" - }, - "preferredDiskBlockSize": { - "description": "PreferredBlockSize optionally defines the block size of Disk devices.", - "type": "object", - "properties": { - "custom": { - "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", - "type": "object", - "required": [ - "logical", - "physical" - ], - "properties": { - "logical": { - "type": "integer" - }, - "physical": { - "type": "integer" - } - } - }, - "matchVolume": { - "description": "Represents if a feature is enabled or disabled.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "preferredDiskBus": { - "description": "PreferredDiskBus optionally defines the preferred bus for Disk Disk devices.", - "type": "string" - }, - "preferredDiskCache": { - "description": "PreferredCache optionally defines the DriverCache to be used by Disk devices.", - "type": "string" - }, - "preferredDiskDedicatedIoThread": { - "description": "PreferredDedicatedIoThread optionally enables dedicated IO threads for Disk devices.", - "type": "boolean" - }, - "preferredDiskIO": { - "description": "PreferredIo optionally defines the QEMU disk IO mode to be used by Disk devices.", - "type": "string" - }, - "preferredInputBus": { - "description": "PreferredInputBus optionally defines the preferred bus for Input devices.", - "type": "string" - }, - "preferredInputType": { - "description": "PreferredInputType optionally defines the preferred type for Input devices.", - "type": "string" - }, - "preferredInterfaceMasquerade": { - "description": "PreferredInterfaceMasquerade optionally defines the preferred masquerade configuration to use with each network interface.", - "type": "object" - }, - "preferredInterfaceModel": { - "description": "PreferredInterfaceModel optionally defines the preferred model to be used by Interface devices.", - "type": "string" - }, - "preferredLunBus": { - "description": "PreferredLunBus optionally defines the preferred bus for Lun Disk devices.", + "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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "virtualMachineTemplate": { + "description": "Template describes the VM that will be created.", + "type": "object", + "properties": { + "metadata": { + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true + }, + "spec": { + "description": "VirtualMachineSpec contains the VirtualMachine specification.", + "type": "object", + "required": [ + "template" + ], + "properties": { + "dataVolumeTemplates": { + "description": "dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle.", + "type": "array", + "items": { + "required": [ + "spec" + ], + "type": "object", + "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" }, - "preferredNetworkInterfaceMultiQueue": { - "description": "PreferredNetworkInterfaceMultiQueue optionally enables the vhost multiqueue feature for virtio interfaces.", - "type": "boolean" - }, - "preferredRng": { - "description": "PreferredRng optionally defines the preferred rng device to be used.", - "type": "object" - }, - "preferredSoundModel": { - "description": "PreferredSoundModel optionally defines the preferred model for Sound devices.", + "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" }, - "preferredTPM": { - "description": "PreferredTPM optionally defines the preferred TPM device to be used.", + "metadata": { "type": "object", - "properties": { - "persistent": { - "description": "Persistent indicates the state of the TPM device should be kept accross reboots Defaults to false", - "type": "boolean" - } - } - }, - "preferredUseVirtioTransitional": { - "description": "PreferredUseVirtioTransitional optionally defines the preferred value of UseVirtioTransitional", - "type": "boolean" + "nullable": true, + "x-kubernetes-preserve-unknown-fields": true }, - "preferredVirtualGPUOptions": { - "description": "PreferredVirtualGPUOptions optionally defines the preferred value of VirtualGPUOptions", + "spec": { + "description": "DataVolumeSpec contains the DataVolume specification.", "type": "object", "properties": { - "display": { - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "ramFB": { - "description": "Enables a boot framebuffer, until the guest OS loads a real GPU driver Defaults to true.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } + "checkpoints": { + "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.", + "type": "array", + "items": { + "description": "DataVolumeCheckpoint defines a stage in a warm migration.", + "type": "object", + "required": [ + "current", + "previous" + ], + "properties": { + "current": { + "description": "Current is the identifier of the snapshot created for this checkpoint.", + "type": "string" + }, + "previous": { + "description": "Previous is the identifier of the snapshot from the previous checkpoint.", + "type": "string" } } } - } - } - } - } - }, - "features": { - "description": "Features optionally defines preferences associated with the Features attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredAcpi": { - "description": "PreferredAcpi optionally enables the ACPI feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "preferredApic": { - "description": "PreferredApic optionally enables and configures the APIC feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - }, - "endOfInterrupt": { - "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", - "type": "boolean" - } - } - }, - "preferredHyperv": { - "description": "PreferredHyperv optionally enables and configures HyperV features", - "type": "object", - "properties": { - "evmcs": { - "description": "EVMCS Speeds up L2 vmexits, but disables other virtualization features. Requires vapic. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "frequencies": { - "description": "Frequencies improves the TSC clock source handling for Hyper-V on KVM. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "ipi": { - "description": "IPI improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } }, - "reenlightenment": { - "description": "Reenlightenment enables the notifications on TSC frequency changes. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } + "contentType": { + "description": "DataVolumeContentType options: \"kubevirt\", \"archive\"", + "type": "string", + "enum": [ + "kubevirt", + "archive" + ] }, - "relaxed": { - "description": "Relaxed instructs the guest OS to disable watchdog timeouts. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } + "finalCheckpoint": { + "description": "FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.", + "type": "boolean" }, - "reset": { - "description": "Reset enables Hyperv reboot/reset for the vmi. Requires synic. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } + "preallocation": { + "description": "Preallocation controls whether storage for DataVolumes should be allocated in advance.", + "type": "boolean" }, - "runtime": { - "description": "Runtime improves the time accounting to improve scheduling in the guest. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } + "priorityClassName": { + "description": "PriorityClassName for Importer, Cloner and Uploader pod", + "type": "string" }, - "spinlocks": { - "description": "Spinlocks allows to configure the spinlock retry attempts.", + "pvc": { + "description": "PVC is the PVC specification", "type": "object", "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "accessModes": { + "description": "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "type": "array", + "items": { + "type": "string" + } }, - "spinlocks": { - "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", - "type": "integer", - "format": "int32" - } - } - }, - "synic": { - "description": "SyNIC enables the Synthetic Interrupt Controller. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "dataSource": { + "description": "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "dataSourceRef": { + "description": "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", + "type": "string" + } + } + }, + "resources": { + "description": "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "type": "object", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", + "type": "array", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + }, + "requests": { + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + }, + "selector": { + "description": "selector is a label query over volumes to consider for binding.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "storageClassName": { + "description": "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "volumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" } } }, - "synictimer": { - "description": "SyNICTimer enables Synthetic Interrupt Controller Timers, reducing CPU load. Defaults to the machine type setting.", + "source": { + "description": "Source is the src of the data for the requested DataVolume", "type": "object", "properties": { - "direct": { - "description": "Represents if a feature is enabled or disabled.", + "blank": { + "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", + "type": "object" + }, + "gcs": { + "description": "DataVolumeSourceGCS provides the parameters to create a Data Volume from an GCS source", + "type": "object", + "required": [ + "url" + ], + "properties": { + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the GCS source", + "type": "string" + }, + "url": { + "description": "URL is the url of the GCS source", + "type": "string" + } + } + }, + "http": { + "description": "DataVolumeSourceHTTP can be either an http or https endpoint, with an optional basic auth user name and password, and an optional configmap containing additional CAs", + "type": "object", + "required": [ + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", + "type": "string" + }, + "extraHeaders": { + "description": "ExtraHeaders is a list of strings containing extra headers to include with HTTP transfer requests", + "type": "array", + "items": { + "type": "string" + } + }, + "secretExtraHeaders": { + "description": "SecretExtraHeaders is a list of Secret references, each containing an extra HTTP header that may include sensitive information", + "type": "array", + "items": { + "type": "string" + } + }, + "secretRef": { + "description": "SecretRef A Secret reference, the secret should contain accessKeyId (user name) base64 encoded, and secretKey (password) also base64 encoded", + "type": "string" + }, + "url": { + "description": "URL is the URL of the http(s) endpoint", + "type": "string" + } + } + }, + "imageio": { + "description": "DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source", + "type": "object", + "required": [ + "diskId", + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap provides a reference to the CA cert", + "type": "string" + }, + "diskId": { + "description": "DiskID provides id of a disk to be imported", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the ovirt-engine", + "type": "string" + }, + "url": { + "description": "URL is the URL of the ovirt-engine", + "type": "string" + } + } + }, + "pvc": { + "description": "DataVolumeSourcePVC provides the parameters to create a Data Volume from an existing PVC", + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "description": "The name of the source PVC", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source PVC", + "type": "string" + } + } + }, + "registry": { + "description": "DataVolumeSourceRegistry provides the parameters to create a Data Volume from an registry source", + "type": "object", + "properties": { + "certConfigMap": { + "description": "CertConfigMap provides a reference to the Registry certs", + "type": "string" + }, + "imageStream": { + "description": "ImageStream is the name of image stream for import", + "type": "string" + }, + "pullMethod": { + "description": "PullMethod can be either \"pod\" (default import), or \"node\" (node docker cache based import)", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the Registry source", + "type": "string" + }, + "url": { + "description": "URL is the url of the registry source (starting with the scheme: docker, oci-archive)", + "type": "string" + } + } + }, + "s3": { + "description": "DataVolumeSourceS3 provides the parameters to create a Data Volume from an S3 source", + "type": "object", + "required": [ + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the S3 source", + "type": "string" + }, + "url": { + "description": "URL is the url of the S3 source", + "type": "string" + } + } + }, + "snapshot": { + "description": "DataVolumeSourceSnapshot provides the parameters to create a Data Volume from an existing VolumeSnapshot", "type": "object", + "required": [ + "name", + "namespace" + ], "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "name": { + "description": "The name of the source VolumeSnapshot", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source VolumeSnapshot", + "type": "string" } } }, - "enabled": { - "type": "boolean" - } - } - }, - "tlbflush": { - "description": "TLBFlush improves performances in overcommited environments. Requires vpindex. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "vapic": { - "description": "VAPIC improves the paravirtualized handling of interrupts. Defaults to the machine type setting.", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "upload": { + "description": "DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source", + "type": "object" + }, + "vddk": { + "description": "DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source", + "type": "object", + "properties": { + "backingFile": { + "description": "BackingFile is the path to the virtual hard disk to migrate from vCenter/ESXi", + "type": "string" + }, + "initImageURL": { + "description": "InitImageURL is an optional URL to an image containing an extracted VDDK library, overrides v2v-vmware config map", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides a reference to a secret containing the username and password needed to access the vCenter or ESXi host", + "type": "string" + }, + "thumbprint": { + "description": "Thumbprint is the certificate thumbprint of the vCenter or ESXi host", + "type": "string" + }, + "url": { + "description": "URL is the URL of the vCenter or ESXi host with the VM to migrate", + "type": "string" + }, + "uuid": { + "description": "UUID is the UUID of the virtual machine that the backing file is attached to in vCenter/ESXi", + "type": "string" + } + } } } }, - "vendorid": { - "description": "VendorID allows setting the hypervisor vendor id. Defaults to the machine type setting.", + "sourceRef": { + "description": "SourceRef is an indirect reference to the source of data for the requested DataVolume", "type": "object", + "required": [ + "kind", + "name" + ], "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" + "kind": { + "description": "The kind of the source reference, currently only \"DataSource\" is supported", + "type": "string" }, - "vendorid": { - "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", + "name": { + "description": "The name of the source reference", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source reference, defaults to the DataVolume namespace", "type": "string" } } }, - "vpindex": { - "description": "VPIndex enables the Virtual Processor Index to help windows identifying virtual processors. Defaults to the machine type setting.", + "storage": { + "description": "Storage is the requested storage specification", "type": "object", "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "preferredKvm": { - "description": "PreferredKvm optionally enables and configures KVM features", - "type": "object", - "properties": { - "hidden": { - "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", - "type": "boolean" - } - } - }, - "preferredPvspinlock": { - "description": "PreferredPvspinlock optionally enables the Pvspinlock feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - }, - "preferredSmm": { - "description": "PreferredSmm optionally enables the SMM feature", - "type": "object", - "properties": { - "enabled": { - "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", - "type": "boolean" - } - } - } - } - }, - "firmware": { - "description": "Firmware optionally defines preferences associated with the Firmware attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredUseBios": { - "description": "PreferredUseBios optionally enables BIOS", - "type": "boolean" - }, - "preferredUseBiosSerial": { - "description": "PreferredUseBiosSerial optionally transmitts BIOS output over the serial. \n Requires PreferredUseBios to be enabled.", - "type": "boolean" - }, - "preferredUseEfi": { - "description": "PreferredUseEfi optionally enables EFI", - "type": "boolean" - }, - "preferredUseSecureBoot": { - "description": "PreferredUseSecureBoot optionally enables SecureBoot and the OVMF roms will be swapped for SecureBoot-enabled ones. \n Requires PreferredUseEfi and PreferredSmm to be enabled.", - "type": "boolean" - } - } - }, - "machine": { - "description": "Machine optionally defines preferences associated with the Machine attribute of a VirtualMachineInstance DomainSpec", - "type": "object", - "properties": { - "preferredMachineType": { - "description": "PreferredMachineType optionally defines the preferred machine type to use.", - "type": "string" - } - } - }, - "preferredSubdomain": { - "description": "Subdomain of the VirtualMachineInstance", - "type": "string" - }, - "preferredTerminationGracePeriodSeconds": { - "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", - "type": "integer", - "format": "int64" - }, - "requirements": { - "description": "Requirements defines the minium amount of instance type defined resources required by a set of preferences", - "type": "object", - "properties": { - "cpu": { - "description": "Required CPU related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Minimal number of vCPUs required by the preference.", - "type": "integer", - "format": "int32" - } - } - }, - "memory": { - "description": "Required Memory related attributes of the instancetype.", - "type": "object", - "required": [ - "guest" - ], - "properties": { - "guest": { - "description": "Minimal amount of memory required by the preference.", - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" + "accessModes": { + "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "type": "array", + "items": { + "type": "string" + } }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true - } - } - } - } - }, - "volumes": { - "description": "Volumes optionally defines preferences associated with the Volumes attribute of a VirtualMachineInstace DomainSpec", - "type": "object", - "properties": { - "preferredStorageClassName": { - "description": "PreffereedStorageClassName optionally defines the preferred storageClass", - "type": "string" - } - } - } - } - } - } - } - } - } - ], - "conversion": {} - }, - "status": { - "conditions": [], - "acceptedNames": { - "plural": "virtualmachinepreferences", - "singular": "virtualmachinepreference", - "shortNames": [ - "vmpref", - "vmprefs", - "vmp", - "vmps" - ], - "kind": "VirtualMachinePreference", - "listKind": "VirtualMachinePreferenceList", - "categories": [ - "all" - ] - }, - "storedVersions": [ - "v1beta1" - ] - } - }, - "short": "VirtualMachinePreference", - "apiGroup": "instancetype.kubevirt.io", - "apiKind": "VirtualMachinePreference", - "apiVersion": "v1beta1", - "readProperties": { - "spec": "spec" - }, - "writeProperties": { - "spec": "spec" - }, - "group": "kubevirt", - "sub": "kubevirt", - "listExcludes": [], - "readExcludes": [], - "simpleExcludes": [], - "gqlDefs": { - "metadata": "metadata!", - "spec": "JSONObject" - }, - "namespaced": true - }, - { - "alternatives": [], - "name": "io.kubevirt.migrations.v1alpha1.MigrationPolicy", - "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" - }, - "spec": { - "type": "object", - "required": [ - "selectors" - ], - "properties": { - "allowAutoConverge": { - "type": "boolean" - }, - "allowPostCopy": { - "type": "boolean" - }, - "bandwidthPerMigration": { - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true - }, - "completionTimeoutPerGiB": { - "type": "integer", - "format": "int64" - }, - "selectors": { - "type": "object", - "properties": { - "namespaceSelector": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "virtualMachineInstanceSelector": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - } - } - }, - "status": {} - }, - "description": "MigrationPolicy holds migration policy (i.e. configurations) to apply to a VM or group of VMs", - "type": "object", - "required": [ - "spec" - ], - "x-kubernetes-group-version-kind": [ - { - "group": "migrations.kubevirt.io", - "kind": "MigrationPolicy", - "version": "v1alpha1" - } - ] - }, - "crd": { - "metadata": { - "name": "migrationpolicies.migrations.kubevirt.io" - }, - "spec": { - "group": "migrations.kubevirt.io", - "names": { - "plural": "migrationpolicies", - "singular": "migrationpolicy", - "kind": "MigrationPolicy", - "listKind": "MigrationPolicyList", - "categories": [ - "all" - ] - }, - "scope": "Cluster", - "versions": [ - { - "name": "v1alpha1", - "served": true, - "storage": true, - "schema": { - "openAPIV3Schema": { - "description": "MigrationPolicy holds migration policy (i.e. configurations) to apply to a VM or group of VMs", - "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" - }, - "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": { - "type": "object", - "required": [ - "selectors" - ], - "properties": { - "allowAutoConverge": { - "type": "boolean" - }, - "allowPostCopy": { - "type": "boolean" - }, - "bandwidthPerMigration": { - "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "anyOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ], - "x-kubernetes-int-or-string": true - }, - "completionTimeoutPerGiB": { - "type": "integer", - "format": "int64" - }, - "selectors": { - "type": "object", - "properties": { - "namespaceSelector": { - "type": "object", - "additionalProperties": { - "type": "string" + "dataSource": { + "description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "dataSourceRef": { + "description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", + "type": "string" + } + } + }, + "resources": { + "description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "type": "object", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", + "type": "array", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + }, + "requests": { + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + }, + "selector": { + "description": "A label query over volumes to consider for binding.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "storageClassName": { + "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" + } + } + } } }, - "virtualMachineInstanceSelector": { + "status": { + "description": "DataVolumeTemplateDummyStatus is here simply for backwards compatibility with a previous API.", "type": "object", - "additionalProperties": { - "type": "string" - } + "nullable": true } - } - } - } - }, - "status": { - "type": "object", - "nullable": true - } - } - } - }, - "subresources": { - "status": {} - } - } - ], - "conversion": {} - }, - "status": { - "conditions": [], - "acceptedNames": { - "plural": "migrationpolicies", - "singular": "migrationpolicy", - "kind": "MigrationPolicy", - "listKind": "MigrationPolicyList", - "categories": [ - "all" - ] - }, - "storedVersions": [ - "v1alpha1" - ] - } - }, - "short": "MigrationPolicy", - "apiGroup": "migrations.kubevirt.io", - "apiKind": "MigrationPolicy", - "apiVersion": "v1alpha1", - "readProperties": { - "spec": "spec", - "status": "status" - }, - "writeProperties": { - "spec": "spec" - }, - "group": "kubevirt", - "sub": "kubevirt", - "listExcludes": [], - "readExcludes": [], - "simpleExcludes": [], - "gqlDefs": { - "metadata": "metadata!", - "spec": "JSONObject", - "status": "JSONObject" - }, - "namespaced": false - }, - { - "alternatives": [], - "name": "io.kubevirt.pool.v1alpha1.VirtualMachinePool", - "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" - }, - "spec": { - "type": "object", - "required": [ - "selector", - "virtualMachineTemplate" - ], - "properties": { - "paused": { - "description": "Indicates that the pool is paused.", - "type": "boolean" - }, - "replicas": { - "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", - "type": "integer", - "format": "int32" - }, - "selector": { - "description": "Label selector for pods. Existing Poolss whose pods are selected by this will be the ones affected by this deployment.", - "type": "object", - "properties": { - "matchExpressions": { - "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", - "type": "array", - "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", - "type": "object", - "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. 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.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "matchLabels": { - "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", - "additionalProperties": { - "type": "string" - } - } - } - }, - "virtualMachineTemplate": { - "description": "Template describes the VM that will be created.", - "type": "object", - "properties": { - "metadata": { - "x-kubernetes-preserve-unknown-fields": true - }, - "spec": { - "description": "VirtualMachineSpec contains the VirtualMachine specification.", - "type": "object", - "required": [ - "template" - ], - "properties": { - "dataVolumeTemplates": { - "description": "dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle.", - "type": "array", - "items": { - "required": [ - "spec" - ] + }, + "nullable": true } }, "instancetype": { @@ -51201,6 +54719,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when inferring the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", "type": "string" @@ -51215,23 +54737,6 @@ } } }, - "liveUpdateFeatures": { - "description": "LiveUpdateFeatures references a configuration of hotpluggable resources", - "type": "object", - "properties": { - "cpu": { - "description": "LiveUpdateCPU holds hotplug configuration for the CPU resource. Empty struct indicates that default will be used for maxSockets. Default is specified on cluster level. Absence of the struct means opt-out from CPU hotplug functionality.", - "type": "object", - "properties": { - "maxSockets": { - "description": "The maximum amount of sockets that can be hot-plugged to the Virtual Machine", - "type": "integer", - "format": "int32" - } - } - } - } - }, "preference": { "description": "PreferenceMatcher references a set of preference that is used to fill fields in Template", "type": "object", @@ -51240,6 +54745,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when preference the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", "type": "string" @@ -51267,7 +54776,9 @@ "type": "object", "properties": { "metadata": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true }, "spec": { "description": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", @@ -51299,6 +54810,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -52293,7 +55808,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -52401,6 +55916,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -52442,6 +55961,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -52576,6 +56099,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -52632,7 +56168,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -52648,7 +56184,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -52700,6 +56236,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -52992,6 +56532,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -53010,6 +56560,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -53079,6 +56633,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -53088,6 +56650,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -53110,7 +56676,15 @@ "guest": { "description": "Guest allows to specifying the amount of memory which is visible inside the Guest OS. The Guest must lie between Requests and Limits from the resources section. Defaults to the requested memory in the resources section if not specified.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "hugepages": { "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.", @@ -53121,6 +56695,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -53133,7 +56720,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "overcommitGuestOverhead": { @@ -53145,7 +56740,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -53153,7 +56756,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -53225,7 +56828,202 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "scheme": { + "description": "Scheme to use for connecting to the host. Defaults to HTTP.", + "type": "string" + } + } + }, + "initialDelaySeconds": { + "description": "Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "type": "integer", + "format": "int32" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", + "type": "integer", + "format": "int32" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.", + "type": "integer", + "format": "int32" + }, + "tcpSocket": { + "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook", + "type": "object", + "required": [ + "port" + ], + "properties": { + "host": { + "description": "Optional: Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "port": { + "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + } + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "type": "integer", + "format": "int32" + } + } + }, + "networks": { + "description": "List of networks that can be attached to a vm's virtual interface.", + "type": "array", + "items": { + "description": "Network represents a network type and a resource that should be connected to the vm.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "multus": { + "description": "Represents the multus cni network.", + "type": "object", + "required": [ + "networkName" + ], + "properties": { + "default": { + "description": "Select the default network and add it to the multus-cni.io/default-network annotation.", + "type": "boolean" + }, + "networkName": { + "description": "References to a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", + "type": "string" + } + } + }, + "name": { + "description": "Network name. Must be a DNS_LABEL and unique within the vm. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "pod": { + "description": "Represents the stock pod network interface.", + "type": "object", + "properties": { + "vmIPv6NetworkCIDR": { + "description": "IPv6 CIDR for the vm network. Defaults to fd10:0:2::/120 if not specified.", + "type": "string" + }, + "vmNetworkCIDR": { + "description": "CIDR for vm network. Default 10.0.2.0/24 if not specified.", + "type": "string" + } + } + } + } + } + }, + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "priorityClassName": { + "description": "If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default.", + "type": "string" + }, + "readinessProbe": { + "description": "Periodic probe of VirtualMachineInstance service readiness. VirtualmachineInstances will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "type": "object", + "properties": { + "exec": { + "description": "One and only one of the following should be specified. Exec specifies the action to take, it will be executed on the guest through the qemu-guest-agent. If the guest agent is not available, this probe will fail.", + "type": "object", + "properties": { + "command": { + "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", + "type": "integer", + "format": "int32" + }, + "guestAgentPing": { + "description": "GuestAgentPing contacts the qemu-guest-agent for availability checks.", + "type": "object" + }, + "httpGet": { + "description": "HTTPGet specifies the http request to perform.", + "type": "object", + "required": [ + "port" + ], + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", + "type": "string" + }, + "httpHeaders": { + "description": "Custom headers to set in the request. HTTP allows repeated headers.", + "type": "array", + "items": { + "description": "HTTPHeader describes a custom header to be used in HTTP probes", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "The header field name", + "type": "string" + }, + "value": { + "description": "The header field value", + "type": "string" + } + } + } + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -53261,178 +57059,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true - } - } - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "type": "integer", - "format": "int32" - } - } - }, - "networks": { - "description": "List of networks that can be attached to a vm's virtual interface.", - "type": "array", - "items": { - "description": "Network represents a network type and a resource that should be connected to the vm.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "multus": { - "description": "Represents the multus cni network.", - "type": "object", - "required": [ - "networkName" - ], - "properties": { - "default": { - "description": "Select the default network and add it to the multus-cni.io/default-network annotation.", - "type": "boolean" - }, - "networkName": { - "description": "References to a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", - "type": "string" - } - } - }, - "name": { - "description": "Network name. Must be a DNS_LABEL and unique within the vm. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", - "type": "string" - }, - "pod": { - "description": "Represents the stock pod network interface.", - "type": "object", - "properties": { - "vmIPv6NetworkCIDR": { - "description": "IPv6 CIDR for the vm network. Defaults to fd10:0:2::/120 if not specified.", - "type": "string" - }, - "vmNetworkCIDR": { - "description": "CIDR for vm network. Default 10.0.2.0/24 if not specified.", - "type": "string" - } - } - } - } - } - }, - "nodeSelector": { - "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "priorityClassName": { - "description": "If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default.", - "type": "string" - }, - "readinessProbe": { - "description": "Periodic probe of VirtualMachineInstance service readiness. VirtualmachineInstances will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "type": "object", - "properties": { - "exec": { - "description": "One and only one of the following should be specified. Exec specifies the action to take, it will be executed on the guest through the qemu-guest-agent. If the guest agent is not available, this probe will fail.", - "type": "object", - "properties": { - "command": { - "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", - "type": "integer", - "format": "int32" - }, - "guestAgentPing": { - "description": "GuestAgentPing contacts the qemu-guest-agent for availability checks.", - "type": "object" - }, - "httpGet": { - "description": "HTTPGet specifies the http request to perform.", - "type": "object", - "required": [ - "port" - ], - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", - "type": "string" - }, - "httpHeaders": { - "description": "Custom headers to set in the request. HTTP allows repeated headers.", - "type": "array", - "items": { - "description": "HTTPHeader describes a custom header to be used in HTTP probes", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "description": "The header field name", - "type": "string" - }, - "value": { - "description": "The header field value", - "type": "string" - } + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" } - } - }, - "path": { - "description": "Path to access on the HTTP server.", - "type": "string" - }, - "port": { - "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true - }, - "scheme": { - "description": "Scheme to use for connecting to the host. Defaults to HTTP.", - "type": "string" - } - } - }, - "initialDelaySeconds": { - "description": "Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "type": "integer", - "format": "int32" - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", - "type": "integer", - "format": "int32" - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.", - "type": "integer", - "format": "int32" - }, - "tcpSocket": { - "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook", - "type": "object", - "required": [ - "port" - ], - "properties": { - "host": { - "description": "Optional: Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "port": { - "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + ] } } }, @@ -53795,7 +57430,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -53826,7 +57469,15 @@ "capacity": { "description": "Capacity of the sparse disk.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -53864,7 +57515,15 @@ "capacity": { "description": "Capacity of the sparse disk", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "path": { "description": "The path to HostDisk image located on the cluster", @@ -54006,10 +57665,14 @@ ], "properties": { "lastProbeTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "lastTransitionTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "message": { "type": "string" @@ -54040,6 +57703,14 @@ "format": "int32" } } + }, + "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" } }, "description": "VirtualMachinePool resource contains a VirtualMachine configuration that can be used to replicate multiple VirtualMachine resources.", @@ -54835,6 +58506,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when inferring the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", "type": "string" @@ -54849,23 +58524,6 @@ } } }, - "liveUpdateFeatures": { - "description": "LiveUpdateFeatures references a configuration of hotpluggable resources", - "type": "object", - "properties": { - "cpu": { - "description": "LiveUpdateCPU holds hotplug configuration for the CPU resource. Empty struct indicates that default will be used for maxSockets. Default is specified on cluster level. Absence of the struct means opt-out from CPU hotplug functionality.", - "type": "object", - "properties": { - "maxSockets": { - "description": "The maximum amount of sockets that can be hot-plugged to the Virtual Machine", - "type": "integer", - "format": "int32" - } - } - } - } - }, "preference": { "description": "PreferenceMatcher references a set of preference that is used to fill fields in Template", "type": "object", @@ -54874,6 +58532,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when preference the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", "type": "string" @@ -54935,6 +58597,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -55929,7 +59595,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -56037,6 +59703,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -56078,6 +59748,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -56212,6 +59886,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -56268,7 +59955,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -56284,7 +59971,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -56336,6 +60023,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -56628,6 +60319,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -56646,6 +60347,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -56715,6 +60420,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -56724,6 +60437,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -56765,6 +60482,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -56813,7 +60543,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -57874,17 +61604,12 @@ "name": "io.kubevirt.snapshot.v1alpha1.VirtualMachineRestore", "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": "VirtualMachineRestoreSpec is the spec for a VirtualMachineRestoreresource", "type": "object", + "description": "VirtualMachineRestoreSpec is the spec for a VirtualMachineRestoreresource", "required": [ "target", "virtualMachineSnapshotName" @@ -57925,6 +61650,14 @@ } } }, + "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" + }, "status": { "description": "VirtualMachineRestoreStatus is the spec for a VirtualMachineRestoreresource", "type": "object", @@ -57943,10 +61676,14 @@ ], "properties": { "lastProbeTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "lastTransitionTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "message": { "type": "string" @@ -58293,17 +62030,12 @@ "name": "io.kubevirt.snapshot.v1alpha1.VirtualMachineSnapshot", "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": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", "type": "object", + "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", "required": [ "source" ], @@ -58340,6 +62072,14 @@ } } }, + "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" + }, "status": { "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", "type": "object", @@ -58355,10 +62095,14 @@ ], "properties": { "lastProbeTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "lastTransitionTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "message": { "type": "string" @@ -58377,7 +62121,9 @@ } }, "creationTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "error": { "description": "Error is the last error encountered during the snapshot/restore", @@ -58622,177 +62368,819 @@ "items": { "type": "string" }, - "x-kubernetes-list-type": "set" - } - } - }, - "sourceUID": { - "description": "UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated.", - "type": "string" - }, - "virtualMachineSnapshotContentName": { - "type": "string" - } - } - } - } - } - }, - "additionalPrinterColumns": [ - { - "name": "SourceKind", - "type": "string", - "jsonPath": ".spec.source.kind" - }, - { - "name": "SourceName", - "type": "string", - "jsonPath": ".spec.source.name" - }, - { - "name": "Phase", - "type": "string", - "jsonPath": ".status.phase" - }, - { - "name": "ReadyToUse", - "type": "boolean", - "jsonPath": ".status.readyToUse" - }, - { - "name": "CreationTime", - "type": "date", - "jsonPath": ".status.creationTime" - }, - { - "name": "Error", - "type": "string", - "jsonPath": ".status.error.message" - } - ] - } - ], - "conversion": {} - }, - "status": { - "conditions": [], - "acceptedNames": { - "plural": "virtualmachinesnapshots", - "singular": "virtualmachinesnapshot", - "shortNames": [ - "vmsnapshot", - "vmsnapshots" - ], - "kind": "VirtualMachineSnapshot", - "listKind": "VirtualMachineSnapshotList", - "categories": [ - "all" - ] - }, - "storedVersions": [ - "v1alpha1" - ] - } - }, - "additionalColumns": [ - { - "name": "SourceKind", - "type": "string", - "jsonPath": ".spec.source.kind" - }, - { - "name": "SourceName", - "type": "string", - "jsonPath": ".spec.source.name" - }, - { - "name": "Phase", - "type": "string", - "jsonPath": ".status.phase" - }, - { - "name": "ReadyToUse", - "type": "boolean", - "jsonPath": ".status.readyToUse" - }, - { - "name": "CreationTime", - "type": "date", - "jsonPath": ".status.creationTime" - }, - { - "name": "Error", - "type": "string", - "jsonPath": ".status.error.message" - } - ], - "short": "VirtualMachineSnapshot", - "apiGroup": "snapshot.kubevirt.io", - "apiKind": "VirtualMachineSnapshot", - "apiVersion": "v1alpha1", - "readProperties": { - "spec": "spec", - "status": "status" - }, - "writeProperties": { - "spec": "spec" - }, - "group": "kubevirt", - "sub": "kubevirt", - "listExcludes": [], - "readExcludes": [], - "simpleExcludes": [], - "gqlDefs": { - "metadata": "metadata!", - "spec": "JSONObject", - "status": "JSONObject" - }, - "namespaced": true - }, - { - "alternatives": [], - "name": "io.kubevirt.snapshot.v1alpha1.VirtualMachineSnapshotContent", - "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" - }, - "spec": { - "description": "VirtualMachineSnapshotContentSpec is the spec for a VirtualMachineSnapshotContent resource", - "type": "object", - "required": [ - "source" - ], - "properties": { - "source": { - "description": "SourceSpec contains the appropriate spec for the resource being snapshotted", - "type": "object", - "properties": { - "virtualMachine": { - "type": "object", - "properties": { - "metadata": { - "x-kubernetes-preserve-unknown-fields": true - }, - "spec": { - "description": "VirtualMachineSpec contains the VirtualMachine specification.", - "type": "object", - "required": [ - "template" - ], - "properties": { - "dataVolumeTemplates": { - "description": "dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle.", - "type": "array", - "items": { - "required": [ - "spec" - ] + "x-kubernetes-list-type": "set" + } + } + }, + "sourceUID": { + "description": "UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated.", + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + } + } + } + } + }, + "additionalPrinterColumns": [ + { + "name": "SourceKind", + "type": "string", + "jsonPath": ".spec.source.kind" + }, + { + "name": "SourceName", + "type": "string", + "jsonPath": ".spec.source.name" + }, + { + "name": "Phase", + "type": "string", + "jsonPath": ".status.phase" + }, + { + "name": "ReadyToUse", + "type": "boolean", + "jsonPath": ".status.readyToUse" + }, + { + "name": "CreationTime", + "type": "date", + "jsonPath": ".status.creationTime" + }, + { + "name": "Error", + "type": "string", + "jsonPath": ".status.error.message" + } + ] + } + ], + "conversion": {} + }, + "status": { + "conditions": [], + "acceptedNames": { + "plural": "virtualmachinesnapshots", + "singular": "virtualmachinesnapshot", + "shortNames": [ + "vmsnapshot", + "vmsnapshots" + ], + "kind": "VirtualMachineSnapshot", + "listKind": "VirtualMachineSnapshotList", + "categories": [ + "all" + ] + }, + "storedVersions": [ + "v1alpha1" + ] + } + }, + "additionalColumns": [ + { + "name": "SourceKind", + "type": "string", + "jsonPath": ".spec.source.kind" + }, + { + "name": "SourceName", + "type": "string", + "jsonPath": ".spec.source.name" + }, + { + "name": "Phase", + "type": "string", + "jsonPath": ".status.phase" + }, + { + "name": "ReadyToUse", + "type": "boolean", + "jsonPath": ".status.readyToUse" + }, + { + "name": "CreationTime", + "type": "date", + "jsonPath": ".status.creationTime" + }, + { + "name": "Error", + "type": "string", + "jsonPath": ".status.error.message" + } + ], + "short": "VirtualMachineSnapshot", + "apiGroup": "snapshot.kubevirt.io", + "apiKind": "VirtualMachineSnapshot", + "apiVersion": "v1alpha1", + "readProperties": { + "spec": "spec", + "status": "status" + }, + "writeProperties": { + "spec": "spec" + }, + "group": "kubevirt", + "sub": "kubevirt", + "listExcludes": [], + "readExcludes": [], + "simpleExcludes": [], + "gqlDefs": { + "metadata": "metadata!", + "spec": "JSONObject", + "status": "JSONObject" + }, + "namespaced": true + }, + { + "alternatives": [], + "name": "io.kubevirt.snapshot.v1alpha1.VirtualMachineSnapshotContent", + "definition": { + "properties": { + "metadata": { + "type": "object" + }, + "spec": { + "type": "object", + "description": "VirtualMachineSnapshotContentSpec is the spec for a VirtualMachineSnapshotContent resource", + "required": [ + "source" + ], + "properties": { + "source": { + "description": "SourceSpec contains the appropriate spec for the resource being snapshotted", + "type": "object", + "properties": { + "virtualMachine": { + "type": "object", + "properties": { + "metadata": { + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true + }, + "spec": { + "description": "VirtualMachineSpec contains the VirtualMachine specification.", + "type": "object", + "required": [ + "template" + ], + "properties": { + "dataVolumeTemplates": { + "description": "dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle.", + "type": "array", + "items": { + "required": [ + "spec" + ], + "type": "object", + "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", + "nullable": true, + "x-kubernetes-preserve-unknown-fields": true + }, + "spec": { + "description": "DataVolumeSpec contains the DataVolume specification.", + "type": "object", + "properties": { + "checkpoints": { + "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.", + "type": "array", + "items": { + "description": "DataVolumeCheckpoint defines a stage in a warm migration.", + "type": "object", + "required": [ + "current", + "previous" + ], + "properties": { + "current": { + "description": "Current is the identifier of the snapshot created for this checkpoint.", + "type": "string" + }, + "previous": { + "description": "Previous is the identifier of the snapshot from the previous checkpoint.", + "type": "string" + } + } + } + }, + "contentType": { + "description": "DataVolumeContentType options: \"kubevirt\", \"archive\"", + "type": "string", + "enum": [ + "kubevirt", + "archive" + ] + }, + "finalCheckpoint": { + "description": "FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.", + "type": "boolean" + }, + "preallocation": { + "description": "Preallocation controls whether storage for DataVolumes should be allocated in advance.", + "type": "boolean" + }, + "priorityClassName": { + "description": "PriorityClassName for Importer, Cloner and Uploader pod", + "type": "string" + }, + "pvc": { + "description": "PVC is the PVC specification", + "type": "object", + "properties": { + "accessModes": { + "description": "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "type": "array", + "items": { + "type": "string" + } + }, + "dataSource": { + "description": "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "dataSourceRef": { + "description": "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", + "type": "string" + } + } + }, + "resources": { + "description": "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "type": "object", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", + "type": "array", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + }, + "requests": { + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + }, + "selector": { + "description": "selector is a label query over volumes to consider for binding.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "storageClassName": { + "description": "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "volumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" + } + } + }, + "source": { + "description": "Source is the src of the data for the requested DataVolume", + "type": "object", + "properties": { + "blank": { + "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", + "type": "object" + }, + "gcs": { + "description": "DataVolumeSourceGCS provides the parameters to create a Data Volume from an GCS source", + "type": "object", + "required": [ + "url" + ], + "properties": { + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the GCS source", + "type": "string" + }, + "url": { + "description": "URL is the url of the GCS source", + "type": "string" + } + } + }, + "http": { + "description": "DataVolumeSourceHTTP can be either an http or https endpoint, with an optional basic auth user name and password, and an optional configmap containing additional CAs", + "type": "object", + "required": [ + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", + "type": "string" + }, + "extraHeaders": { + "description": "ExtraHeaders is a list of strings containing extra headers to include with HTTP transfer requests", + "type": "array", + "items": { + "type": "string" + } + }, + "secretExtraHeaders": { + "description": "SecretExtraHeaders is a list of Secret references, each containing an extra HTTP header that may include sensitive information", + "type": "array", + "items": { + "type": "string" + } + }, + "secretRef": { + "description": "SecretRef A Secret reference, the secret should contain accessKeyId (user name) base64 encoded, and secretKey (password) also base64 encoded", + "type": "string" + }, + "url": { + "description": "URL is the URL of the http(s) endpoint", + "type": "string" + } + } + }, + "imageio": { + "description": "DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source", + "type": "object", + "required": [ + "diskId", + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap provides a reference to the CA cert", + "type": "string" + }, + "diskId": { + "description": "DiskID provides id of a disk to be imported", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the ovirt-engine", + "type": "string" + }, + "url": { + "description": "URL is the URL of the ovirt-engine", + "type": "string" + } + } + }, + "pvc": { + "description": "DataVolumeSourcePVC provides the parameters to create a Data Volume from an existing PVC", + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "description": "The name of the source PVC", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source PVC", + "type": "string" + } + } + }, + "registry": { + "description": "DataVolumeSourceRegistry provides the parameters to create a Data Volume from an registry source", + "type": "object", + "properties": { + "certConfigMap": { + "description": "CertConfigMap provides a reference to the Registry certs", + "type": "string" + }, + "imageStream": { + "description": "ImageStream is the name of image stream for import", + "type": "string" + }, + "pullMethod": { + "description": "PullMethod can be either \"pod\" (default import), or \"node\" (node docker cache based import)", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the Registry source", + "type": "string" + }, + "url": { + "description": "URL is the url of the registry source (starting with the scheme: docker, oci-archive)", + "type": "string" + } + } + }, + "s3": { + "description": "DataVolumeSourceS3 provides the parameters to create a Data Volume from an S3 source", + "type": "object", + "required": [ + "url" + ], + "properties": { + "certConfigMap": { + "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the S3 source", + "type": "string" + }, + "url": { + "description": "URL is the url of the S3 source", + "type": "string" + } + } + }, + "snapshot": { + "description": "DataVolumeSourceSnapshot provides the parameters to create a Data Volume from an existing VolumeSnapshot", + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "description": "The name of the source VolumeSnapshot", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source VolumeSnapshot", + "type": "string" + } + } + }, + "upload": { + "description": "DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source", + "type": "object" + }, + "vddk": { + "description": "DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source", + "type": "object", + "properties": { + "backingFile": { + "description": "BackingFile is the path to the virtual hard disk to migrate from vCenter/ESXi", + "type": "string" + }, + "initImageURL": { + "description": "InitImageURL is an optional URL to an image containing an extracted VDDK library, overrides v2v-vmware config map", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides a reference to a secret containing the username and password needed to access the vCenter or ESXi host", + "type": "string" + }, + "thumbprint": { + "description": "Thumbprint is the certificate thumbprint of the vCenter or ESXi host", + "type": "string" + }, + "url": { + "description": "URL is the URL of the vCenter or ESXi host with the VM to migrate", + "type": "string" + }, + "uuid": { + "description": "UUID is the UUID of the virtual machine that the backing file is attached to in vCenter/ESXi", + "type": "string" + } + } + } + } + }, + "sourceRef": { + "description": "SourceRef is an indirect reference to the source of data for the requested DataVolume", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "kind": { + "description": "The kind of the source reference, currently only \"DataSource\" is supported", + "type": "string" + }, + "name": { + "description": "The name of the source reference", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source reference, defaults to the DataVolume namespace", + "type": "string" + } + } + }, + "storage": { + "description": "Storage is the requested storage specification", + "type": "object", + "properties": { + "accessModes": { + "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "type": "array", + "items": { + "type": "string" + } + }, + "dataSource": { + "description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + } + }, + "dataSourceRef": { + "description": "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.", + "type": "object", + "required": [ + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + }, + "namespace": { + "description": "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.", + "type": "string" + } + } + }, + "resources": { + "description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "type": "object", + "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", + "type": "array", + "items": { + "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.", + "type": "string" + } + } + }, + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + }, + "requests": { + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object", + "additionalProperties": { + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true + } + } + } + }, + "selector": { + "description": "A label query over volumes to consider for binding.", + "type": "object", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "type": "array", + "items": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "type": "object", + "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. 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.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "storageClassName": { + "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" + } + } + } + } + }, + "status": { + "description": "DataVolumeTemplateDummyStatus is here simply for backwards compatibility with a previous API.", + "type": "object", + "nullable": true + } + }, + "nullable": true } }, "instancetype": { @@ -58803,6 +63191,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when inferring the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", "type": "string" @@ -58817,23 +63209,6 @@ } } }, - "liveUpdateFeatures": { - "description": "LiveUpdateFeatures references a configuration of hotpluggable resources", - "type": "object", - "properties": { - "cpu": { - "description": "LiveUpdateCPU holds hotplug configuration for the CPU resource. Empty struct indicates that default will be used for maxSockets. Default is specified on cluster level. Absence of the struct means opt-out from CPU hotplug functionality.", - "type": "object", - "properties": { - "maxSockets": { - "description": "The maximum amount of sockets that can be hot-plugged to the Virtual Machine", - "type": "integer", - "format": "int32" - } - } - } - } - }, "preference": { "description": "PreferenceMatcher references a set of preference that is used to fill fields in Template", "type": "object", @@ -58842,6 +63217,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when preference the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", "type": "string" @@ -58869,7 +63248,9 @@ "type": "object", "properties": { "metadata": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true }, "spec": { "description": "VirtualMachineInstance Spec contains the VirtualMachineInstance specification.", @@ -58901,6 +63282,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -59895,7 +64280,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -60003,6 +64388,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -60044,6 +64433,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -60178,6 +64571,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -60234,7 +64640,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -60250,7 +64656,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -60302,6 +64708,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -60594,6 +65004,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -60612,6 +65032,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -60681,6 +65105,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -60690,6 +65122,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -60712,7 +65148,15 @@ "guest": { "description": "Guest allows to specifying the amount of memory which is visible inside the Guest OS. The Guest must lie between Requests and Limits from the resources section. Defaults to the requested memory in the resources section if not specified.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "hugepages": { "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.", @@ -60723,6 +65167,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -60735,7 +65192,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "overcommitGuestOverhead": { @@ -60747,7 +65212,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -60755,7 +65228,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -60827,7 +65300,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -60863,7 +65344,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -60998,7 +65487,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -61034,7 +65531,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -61397,7 +65902,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -61428,7 +65941,15 @@ "capacity": { "description": "Capacity of the sparse disk.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -61466,7 +65987,15 @@ "capacity": { "description": "Capacity of the sparse disk", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "path": { "description": "The path to HostDisk image located on the cluster", @@ -61607,10 +66136,14 @@ ], "properties": { "lastProbeTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "lastTransitionTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "message": { "type": "string" @@ -61636,53 +66169,46 @@ "type": "integer", "format": "int64" }, - "interfaceRequests": { - "description": "InterfaceRequests indicates a list of interfaces added to the VMI template and hot-plugged on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addInterfaceOptions": { - "description": "AddInterfaceOptions when set indicates a network interface should be added. The details within this field specify how to add the interface", - "type": "object", - "required": [ - "name", - "networkAttachmentDefinitionName" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - }, - "networkAttachmentDefinitionName": { - "description": "NetworkAttachmentDefinitionName references a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", - "type": "string" - } - } - }, - "removeInterfaceOptions": { - "description": "RemoveInterfaceOptions when set indicates a network interface should be removed. The details within this field specify how to remove the interface", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, "memoryDumpRequest": { "description": "MemoryDumpRequest tracks memory dump request phase and info of getting a memory dump to the given pvc", "required": [ "claimName", "phase" - ] + ], + "type": "object", + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "description": "EndTimestamp represents the time the memory dump was completed", + "type": "string", + "format": "date-time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "description": "StartTimestamp represents the time the memory dump started", + "type": "string", + "format": "date-time" + } + }, + "nullable": true }, "observedGeneration": { "description": "ObservedGeneration is the generation observed by the vmi when started.", @@ -61691,7 +66217,8 @@ }, "printableStatus": { "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" + "type": "string", + "default": "Stopped" }, "ready": { "description": "Ready indicates if the virtual machine is running and ready", @@ -61701,12 +66228,31 @@ "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", "type": "string" }, + "runStrategy": { + "description": "RunStrategy tracks the last recorded RunStrategy used by the VM. This is needed to correctly process the next strategy (for now only the RerunOnFailure)", + "type": "string" + }, "snapshotInProgress": { "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", "type": "string" }, "startFailure": { - "description": "StartFailure tracks consecutive VMI startup failures for the purposes of crash loop backoffs" + "description": "StartFailure tracks consecutive VMI startup failures for the purposes of crash loop backoffs", + "type": "object", + "properties": { + "consecutiveFailCount": { + "type": "integer" + }, + "lastFailedVMIUID": { + "description": "UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated.", + "type": "string" + }, + "retryAfterTimestamp": { + "type": "string", + "format": "date-time" + } + }, + "nullable": true }, "stateChangeRequests": { "description": "StateChangeRequests indicates a list of actions that should be taken on a VMI e.g. stop a specific VMI then start a new one.", @@ -61837,6 +66383,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -62009,7 +66559,8 @@ "properties": { "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "spec": { "description": "Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", @@ -62100,7 +66651,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -62108,7 +66667,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -62182,12 +66749,22 @@ } } }, + "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" + }, "status": { "description": "VirtualMachineSnapshotContentStatus is the status for a VirtualMachineSnapshotStatus resource", "type": "object", "properties": { "creationTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "error": { "description": "Error is the last error encountered during the snapshot/restore", @@ -62215,7 +66792,9 @@ ], "properties": { "creationTime": { - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "error": { "description": "Error is the last error encountered during the snapshot/restore", @@ -62987,6 +67566,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when inferring the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", "type": "string" @@ -63001,23 +67584,6 @@ } } }, - "liveUpdateFeatures": { - "description": "LiveUpdateFeatures references a configuration of hotpluggable resources", - "type": "object", - "properties": { - "cpu": { - "description": "LiveUpdateCPU holds hotplug configuration for the CPU resource. Empty struct indicates that default will be used for maxSockets. Default is specified on cluster level. Absence of the struct means opt-out from CPU hotplug functionality.", - "type": "object", - "properties": { - "maxSockets": { - "description": "The maximum amount of sockets that can be hot-plugged to the Virtual Machine", - "type": "integer", - "format": "int32" - } - } - } - } - }, "preference": { "description": "PreferenceMatcher references a set of preference that is used to fill fields in Template", "type": "object", @@ -63026,6 +67592,10 @@ "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", "type": "string" }, + "inferFromVolumeFailurePolicy": { + "description": "InferFromVolumeFailurePolicy controls what should happen on failure when preference the instancetype. Allowed values are: \"RejectInferFromVolumeFailure\" and \"IgnoreInferFromVolumeFailure\". If not specified, \"RejectInferFromVolumeFailure\" is used by default.", + "type": "string" + }, "kind": { "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", "type": "string" @@ -63087,6 +67657,10 @@ "description": "ConfigDrivePropagation means that the ssh public keys are injected into the VM using metadata using the configDrive cloud-init provider", "type": "object" }, + "noCloud": { + "description": "NoCloudPropagation means that the ssh public keys are injected into the VM using metadata using the noCloud cloud-init provider", + "type": "object" + }, "qemuGuestAgent": { "description": "QemuGuestAgentAccessCredentailPropagation means ssh public keys are dynamically injected into the vm at runtime via the qemu guest agent. This feature requires the qemu guest agent to be running within the guest.", "type": "object", @@ -64081,7 +68655,7 @@ "type": "boolean" }, "autoattachSerialConsole": { - "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "description": "Whether to attach the default virtio-serial console or not. Serial console access will not be available if set to false. Defaults to true.", "type": "boolean" }, "autoattachVSOCK": { @@ -64189,6 +68763,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -64230,6 +68808,10 @@ } } }, + "downwardMetrics": { + "description": "DownwardMetrics creates a virtio serials for exposing the downward metrics to the vmi.", + "type": "object" + }, "filesystems": { "description": "Filesystems describes filesystem which is connected to the vmi.", "type": "array", @@ -64364,6 +68946,19 @@ "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", "type": "integer" }, + "binding": { + "description": "Binding specifies the binding plugin that will be used to connect the interface to the guest. It provides an alternative to InterfaceBindingMethod. version: 1alphav1", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name references to the binding name as denined in the kubevirt CR. version: 1alphav1", + "type": "string" + } + } + }, "bootOrder": { "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", "type": "integer" @@ -64420,7 +69015,7 @@ "type": "string" }, "macvtap": { - "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "masquerade": { @@ -64436,7 +69031,7 @@ "type": "string" }, "passt": { - "description": "InterfacePasst connects to a given network.", + "description": "Deprecated, please refer to Kubevirt user guide for alternatives.", "type": "object" }, "pciAddress": { @@ -64488,6 +69083,10 @@ } } }, + "logSerialConsole": { + "description": "Whether to log the auto-attached default serial console or not. Serial console logs will be collect to a file and then streamed from a named 'guest-console-log'. Not relevant if autoattachSerialConsole is disabled. Defaults to cluster wide setting on VirtualMachineOptions.", + "type": "boolean" + }, "networkInterfaceMultiqueue": { "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", "type": "boolean" @@ -64780,6 +69379,16 @@ "description": "Firmware.", "type": "object", "properties": { + "acpi": { + "description": "Information that can be set in the ACPI table", + "type": "object", + "properties": { + "slicNameRef": { + "description": "SlicNameRef should match the volume name of a secret object. The data in the secret should be a binary blob that follows the ACPI SLIC standard, see: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85)", + "type": "string" + } + } + }, "bootloader": { "description": "Settings to control the bootloader that is used.", "type": "object", @@ -64798,6 +69407,10 @@ "description": "If set, EFI will be used instead of BIOS.", "type": "object", "properties": { + "persistent": { + "description": "If set to true, Persistent will persist the EFI NVRAM across reboots. Defaults to false", + "type": "boolean" + }, "secureBoot": { "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", "type": "boolean" @@ -64867,6 +69480,14 @@ "description": "AMD Secure Encrypted Virtualization (SEV).", "type": "object", "properties": { + "attestation": { + "description": "If specified, run the attestation process for a vmi.", + "type": "object" + }, + "dhCert": { + "description": "Base64 encoded guest owner's Diffie-Hellman key.", + "type": "string" + }, "policy": { "description": "Guest policy flags as defined in AMD SEV API specification. Note: due to security reasons it is not allowed to enable guest debugging. Therefore NoDebug flag is not exposed to users and is always true.", "type": "object", @@ -64876,6 +69497,10 @@ "type": "boolean" } } + }, + "session": { + "description": "Base64 encoded session blob.", + "type": "string" } } } @@ -64917,6 +69542,19 @@ "type": "string" } } + }, + "maxGuest": { + "description": "MaxGuest allows to specify the maximum amount of memory which is visible inside the Guest OS. The delta between MaxGuest and Guest is the amount of memory that can be hot(un)plugged.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "x-kubernetes-int-or-string": true } } }, @@ -64965,7 +69603,7 @@ } }, "evictionStrategy": { - "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "description": "EvictionStrategy describes the strategy to follow when a node drain occurs. The possible options are: - \"None\": No action will be taken, according to the specified 'RunStrategy' the VirtualMachine will be restarted or shutdown. - \"LiveMigrate\": the VirtualMachineInstance will be migrated instead of being shutdown. - \"LiveMigrateIfPossible\": the same as \"LiveMigrate\" but only if the VirtualMachine is Live-Migratable, otherwise it will behave as \"None\". - \"External\": the VirtualMachineInstance will be protected by a PDB and 'vmi.Status.EvacuationNodeName' will be set on eviction. This is mainly useful for cluster-api-provider-kubevirt (capk) which needs a way for VMI's to be blocked from eviction, yet signal capk that eviction has been called on the VMI so the capk controller can handle tearing the VMI down. Details can be found in the commit description https://github.com/kubevirt/kubevirt/commit/c1d77face705c8b126696bac9a3ee3825f27f1fa.", "type": "string" }, "hostname": { @@ -65906,47 +70544,6 @@ "type": "integer", "format": "int64" }, - "interfaceRequests": { - "description": "InterfaceRequests indicates a list of interfaces added to the VMI template and hot-plugged on an active running VMI.", - "type": "array", - "items": { - "type": "object", - "properties": { - "addInterfaceOptions": { - "description": "AddInterfaceOptions when set indicates a network interface should be added. The details within this field specify how to add the interface", - "type": "object", - "required": [ - "name", - "networkAttachmentDefinitionName" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - }, - "networkAttachmentDefinitionName": { - "description": "NetworkAttachmentDefinitionName references a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", - "type": "string" - } - } - }, - "removeInterfaceOptions": { - "description": "RemoveInterfaceOptions when set indicates a network interface should be removed. The details within this field specify how to remove the interface", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name indicates the logical name of the interface.", - "type": "string" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, "memoryDumpRequest": { "description": "MemoryDumpRequest tracks memory dump request phase and info of getting a memory dump to the given pvc", "type": "object", @@ -65995,7 +70592,8 @@ }, "printableStatus": { "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", - "type": "string" + "type": "string", + "default": "Stopped" }, "ready": { "description": "Ready indicates if the virtual machine is running and ready", @@ -66005,6 +70603,10 @@ "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", "type": "string" }, + "runStrategy": { + "description": "RunStrategy tracks the last recorded RunStrategy used by the VM. This is needed to correctly process the next strategy (for now only the RerunOnFailure)", + "type": "string" + }, "snapshotInProgress": { "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", "type": "string" @@ -66156,6 +70758,10 @@ } } }, + "errorPolicy": { + "description": "If specified, it can change the default error policy (stop) for the disk", + "type": "string" + }, "io": { "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", "type": "string" @@ -66670,17 +71276,12 @@ "name": "io.kubevirt.cdi.v1beta1.CDI", "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": "CDISpec defines our specification for the CDI installation", "type": "object", + "description": "CDISpec defines our specification for the CDI installation", "properties": { "certConfig": { "description": "certificate configuration", @@ -66805,12 +71406,17 @@ "type": "string" } }, + "logVerbosity": { + "description": "LogVerbosity overrides the default verbosity level used to initialize loggers", + "type": "integer", + "format": "int32" + }, "podResourceRequirements": { "description": "ResourceRequirements describes the compute resource requirements.", "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -66835,15 +71441,31 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -66861,16 +71483,43 @@ "type": "object", "properties": { "custom": { - "description": "custom is a user-defined TLS security profile. Be extremely careful using a custom profile as invalid configurations can be catastrophic. An example custom profile looks like this: \n ciphers: - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: TLSv1.1" + "description": "custom is a user-defined TLS security profile. Be extremely careful using a custom profile as invalid configurations can be catastrophic. An example custom profile looks like this: \n ciphers: - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: TLSv1.1", + "type": "object", + "properties": { + "ciphers": { + "description": "ciphers is used to specify the cipher algorithms that are negotiated during the TLS handshake. Operators may remove entries their operands do not support. For example, to use DES-CBC3-SHA (yaml): \n ciphers: - DES-CBC3-SHA", + "type": "array", + "items": { + "type": "string" + } + }, + "minTLSVersion": { + "description": "minTLSVersion is used to specify the minimal version of the TLS protocol that is negotiated during the TLS handshake. For example, to use TLS versions 1.1, 1.2 and 1.3 (yaml): \n minTLSVersion: TLSv1.1 \n NOTE: currently the highest minTLSVersion allowed is VersionTLS12", + "type": "string", + "enum": [ + "VersionTLS10", + "VersionTLS11", + "VersionTLS12", + "VersionTLS13" + ] + } + }, + "nullable": true }, "intermediate": { - "description": "intermediate is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29 \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 minTLSVersion: TLSv1.2" + "description": "intermediate is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29 \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 minTLSVersion: TLSv1.2", + "type": "object", + "nullable": true }, "modern": { - "description": "modern is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 minTLSVersion: TLSv1.3 \n NOTE: Currently unsupported." + "description": "modern is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 minTLSVersion: TLSv1.3 \n NOTE: Currently unsupported.", + "type": "object", + "nullable": true }, "old": { - "description": "old is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 - DHE-RSA-CHACHA20-POLY1305 - ECDHE-ECDSA-AES128-SHA256 - ECDHE-RSA-AES128-SHA256 - ECDHE-ECDSA-AES128-SHA - ECDHE-RSA-AES128-SHA - ECDHE-ECDSA-AES256-SHA384 - ECDHE-RSA-AES256-SHA384 - ECDHE-ECDSA-AES256-SHA - ECDHE-RSA-AES256-SHA - DHE-RSA-AES128-SHA256 - DHE-RSA-AES256-SHA256 - AES128-GCM-SHA256 - AES256-GCM-SHA384 - AES128-SHA256 - AES256-SHA256 - AES128-SHA - AES256-SHA - DES-CBC3-SHA minTLSVersion: TLSv1.0" + "description": "old is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 - DHE-RSA-CHACHA20-POLY1305 - ECDHE-ECDSA-AES128-SHA256 - ECDHE-RSA-AES128-SHA256 - ECDHE-ECDSA-AES128-SHA - ECDHE-RSA-AES128-SHA - ECDHE-ECDSA-AES256-SHA384 - ECDHE-RSA-AES256-SHA384 - ECDHE-ECDSA-AES256-SHA - ECDHE-RSA-AES256-SHA - DHE-RSA-AES128-SHA256 - DHE-RSA-AES256-SHA256 - AES128-GCM-SHA256 - AES256-GCM-SHA384 - AES128-SHA256 - AES256-SHA256 - AES128-SHA - AES256-SHA - DES-CBC3-SHA minTLSVersion: TLSv1.0", + "type": "object", + "nullable": true }, "type": { "description": "type is one of Old, Intermediate, Modern or Custom. Custom provides the ability to specify individual TLS security profile parameters. Old, Intermediate and Modern are TLS security profiles based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations \n The profiles are intent based, so they may change over time as new ciphers are developed and existing ciphers are found to be insecure. Depending on precisely which ciphers are available to a process, the list may be reduced. \n Note that the Modern profile is currently not supported because it is not yet well adopted by common software libraries.", @@ -66890,6 +71539,67 @@ } } }, + "customizeComponents": { + "description": "CustomizeComponents defines patches for components deployed by the CDI operator.", + "type": "object", + "properties": { + "flags": { + "description": "Configure the value used for deployment and daemonset resources", + "type": "object", + "properties": { + "api": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "controller": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uploadProxy": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "patches": { + "type": "array", + "items": { + "description": "CustomizeComponentsPatch defines a patch for some resource.", + "type": "object", + "required": [ + "patch", + "resourceName", + "resourceType", + "type" + ], + "properties": { + "patch": { + "type": "string" + }, + "resourceName": { + "type": "string", + "minLength": 1 + }, + "resourceType": { + "type": "string", + "minLength": 1 + }, + "type": { + "description": "PatchType defines the patch type.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, "imagePullPolicy": { "description": "PullPolicy describes a policy for if/when to pull a container image", "type": "string", @@ -66900,7 +71610,7 @@ ] }, "infra": { - "description": "Rules on which nodes CDI infrastructure pods will be scheduled", + "description": "Selectors and tolerations that should apply to cdi infrastructure components", "type": "object", "properties": { "affinity": { @@ -67560,6 +72270,16 @@ } } }, + "apiServerReplicas": { + "description": "ApiserverReplicas set Replicas for cdi-apiserver", + "type": "integer", + "format": "int32" + }, + "deploymentReplicas": { + "description": "DeploymentReplicas set Replicas for cdi-deployment", + "type": "integer", + "format": "int32" + }, "nodeSelector": { "description": "nodeSelector is the node selector applied to the relevant kind of pods It specifies a map of key-value pairs: for the pod to be eligible to run on a node, the node must have each of the indicated key-value pairs as labels (it can have additional labels as well). See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector", "type": "object", @@ -67597,6 +72317,11 @@ } } } + }, + "uploadProxyReplicas": { + "description": "UploadproxyReplicas set Replicas for cdi-uploadproxy", + "type": "integer", + "format": "int32" } } }, @@ -68315,6 +73040,14 @@ } } }, + "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" + }, "status": { "description": "CDIStatus defines the status of the installation", "type": "object", @@ -68554,12 +73287,17 @@ "type": "string" } }, + "logVerbosity": { + "description": "LogVerbosity overrides the default verbosity level used to initialize loggers", + "type": "integer", + "format": "int32" + }, "podResourceRequirements": { "description": "ResourceRequirements describes the compute resource requirements.", "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -68596,7 +73334,7 @@ } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -68682,6 +73420,67 @@ } } }, + "customizeComponents": { + "description": "CustomizeComponents defines patches for components deployed by the CDI operator.", + "type": "object", + "properties": { + "flags": { + "description": "Configure the value used for deployment and daemonset resources", + "type": "object", + "properties": { + "api": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "controller": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "uploadProxy": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "patches": { + "type": "array", + "items": { + "description": "CustomizeComponentsPatch defines a patch for some resource.", + "type": "object", + "required": [ + "patch", + "resourceName", + "resourceType", + "type" + ], + "properties": { + "patch": { + "type": "string" + }, + "resourceName": { + "type": "string", + "minLength": 1 + }, + "resourceType": { + "type": "string", + "minLength": 1 + }, + "type": { + "description": "PatchType defines the patch type.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, "imagePullPolicy": { "description": "PullPolicy describes a policy for if/when to pull a container image", "type": "string", @@ -68692,7 +73491,7 @@ ] }, "infra": { - "description": "Rules on which nodes CDI infrastructure pods will be scheduled", + "description": "Selectors and tolerations that should apply to cdi infrastructure components", "type": "object", "properties": { "affinity": { @@ -69352,6 +74151,16 @@ } } }, + "apiServerReplicas": { + "description": "ApiserverReplicas set Replicas for cdi-apiserver", + "type": "integer", + "format": "int32" + }, + "deploymentReplicas": { + "description": "DeploymentReplicas set Replicas for cdi-deployment", + "type": "integer", + "format": "int32" + }, "nodeSelector": { "description": "nodeSelector is the node selector applied to the relevant kind of pods It specifies a map of key-value pairs: for the pod to be eligible to run on a node, the node must have each of the indicated key-value pairs as labels (it can have additional labels as well). See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector", "type": "object", @@ -69389,6 +74198,11 @@ } } } + }, + "uploadProxyReplicas": { + "description": "UploadproxyReplicas set Replicas for cdi-uploadproxy", + "type": "integer", + "format": "int32" } } }, @@ -70241,17 +75055,12 @@ "name": "io.kubevirt.cdi.v1beta1.CDIConfig", "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": "CDIConfigSpec defines specification for user configuration", "type": "object", + "description": "CDIConfigSpec defines specification for user configuration", "properties": { "dataVolumeTTLSeconds": { "description": "DataVolumeTTLSeconds is the time in seconds after DataVolume completion it can be garbage collected. Disabled by default.", @@ -70329,12 +75138,17 @@ "type": "string" } }, + "logVerbosity": { + "description": "LogVerbosity overrides the default verbosity level used to initialize loggers", + "type": "integer", + "format": "int32" + }, "podResourceRequirements": { "description": "ResourceRequirements describes the compute resource requirements.", "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -70359,15 +75173,31 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -70385,16 +75215,43 @@ "type": "object", "properties": { "custom": { - "description": "custom is a user-defined TLS security profile. Be extremely careful using a custom profile as invalid configurations can be catastrophic. An example custom profile looks like this: \n ciphers: - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: TLSv1.1" + "description": "custom is a user-defined TLS security profile. Be extremely careful using a custom profile as invalid configurations can be catastrophic. An example custom profile looks like this: \n ciphers: - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: TLSv1.1", + "type": "object", + "properties": { + "ciphers": { + "description": "ciphers is used to specify the cipher algorithms that are negotiated during the TLS handshake. Operators may remove entries their operands do not support. For example, to use DES-CBC3-SHA (yaml): \n ciphers: - DES-CBC3-SHA", + "type": "array", + "items": { + "type": "string" + } + }, + "minTLSVersion": { + "description": "minTLSVersion is used to specify the minimal version of the TLS protocol that is negotiated during the TLS handshake. For example, to use TLS versions 1.1, 1.2 and 1.3 (yaml): \n minTLSVersion: TLSv1.1 \n NOTE: currently the highest minTLSVersion allowed is VersionTLS12", + "type": "string", + "enum": [ + "VersionTLS10", + "VersionTLS11", + "VersionTLS12", + "VersionTLS13" + ] + } + }, + "nullable": true }, "intermediate": { - "description": "intermediate is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29 \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 minTLSVersion: TLSv1.2" + "description": "intermediate is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29 \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 minTLSVersion: TLSv1.2", + "type": "object", + "nullable": true }, "modern": { - "description": "modern is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 minTLSVersion: TLSv1.3 \n NOTE: Currently unsupported." + "description": "modern is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 minTLSVersion: TLSv1.3 \n NOTE: Currently unsupported.", + "type": "object", + "nullable": true }, "old": { - "description": "old is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 - DHE-RSA-CHACHA20-POLY1305 - ECDHE-ECDSA-AES128-SHA256 - ECDHE-RSA-AES128-SHA256 - ECDHE-ECDSA-AES128-SHA - ECDHE-RSA-AES128-SHA - ECDHE-ECDSA-AES256-SHA384 - ECDHE-RSA-AES256-SHA384 - ECDHE-ECDSA-AES256-SHA - ECDHE-RSA-AES256-SHA - DHE-RSA-AES128-SHA256 - DHE-RSA-AES256-SHA256 - AES128-GCM-SHA256 - AES256-GCM-SHA384 - AES128-SHA256 - AES256-SHA256 - AES128-SHA - AES256-SHA - DES-CBC3-SHA minTLSVersion: TLSv1.0" + "description": "old is a TLS security profile based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Old_backward_compatibility \n and looks like this (yaml): \n ciphers: - TLS_AES_128_GCM_SHA256 - TLS_AES_256_GCM_SHA384 - TLS_CHACHA20_POLY1305_SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES256-GCM-SHA384 - ECDHE-RSA-AES256-GCM-SHA384 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - DHE-RSA-AES128-GCM-SHA256 - DHE-RSA-AES256-GCM-SHA384 - DHE-RSA-CHACHA20-POLY1305 - ECDHE-ECDSA-AES128-SHA256 - ECDHE-RSA-AES128-SHA256 - ECDHE-ECDSA-AES128-SHA - ECDHE-RSA-AES128-SHA - ECDHE-ECDSA-AES256-SHA384 - ECDHE-RSA-AES256-SHA384 - ECDHE-ECDSA-AES256-SHA - ECDHE-RSA-AES256-SHA - DHE-RSA-AES128-SHA256 - DHE-RSA-AES256-SHA256 - AES128-GCM-SHA256 - AES256-GCM-SHA384 - AES128-SHA256 - AES256-SHA256 - AES128-SHA - AES256-SHA - DES-CBC3-SHA minTLSVersion: TLSv1.0", + "type": "object", + "nullable": true }, "type": { "description": "type is one of Old, Intermediate, Modern or Custom. Custom provides the ability to specify individual TLS security profile parameters. Old, Intermediate and Modern are TLS security profiles based on: \n https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations \n The profiles are intent based, so they may change over time as new ciphers are developed and existing ciphers are found to be insecure. Depending on precisely which ciphers are available to a process, the list may be reduced. \n Note that the Modern profile is currently not supported because it is not yet well adopted by common software libraries.", @@ -70414,6 +75271,14 @@ } } }, + "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" + }, "status": { "description": "CDIConfigStatus provides the most recently observed status of the CDI Config resource", "type": "object", @@ -70423,7 +75288,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -70448,15 +75313,31 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -70663,12 +75544,17 @@ "type": "string" } }, + "logVerbosity": { + "description": "LogVerbosity overrides the default verbosity level used to initialize loggers", + "type": "integer", + "format": "int32" + }, "podResourceRequirements": { "description": "ResourceRequirements describes the compute resource requirements.", "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -70705,7 +75591,7 @@ } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -70800,7 +75686,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -70837,7 +75723,7 @@ } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -70973,17 +75859,12 @@ "name": "io.kubevirt.cdi.v1beta1.DataImportCron", "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": "DataImportCronSpec defines specification for DataImportCron", "type": "object", + "description": "DataImportCronSpec defines specification for DataImportCron", "required": [ "managedDataSource", "schedule", @@ -71140,7 +76021,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -71165,15 +76046,31 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -71527,7 +76424,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -71552,15 +76449,31 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -71685,6 +76598,14 @@ } } }, + "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" + }, "status": { "description": "DataImportCronStatus provides the most recently observed status of the DataImportCron", "type": "object", @@ -71772,6 +76693,10 @@ "type": "string" } } + }, + "sourceFormat": { + "description": "SourceFormat defines the format of the DataImportCron-created disk image sources", + "type": "string" } } } @@ -71992,7 +76917,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -72029,7 +76954,7 @@ } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -72395,7 +77320,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -72432,7 +77357,7 @@ } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -72656,12 +77581,25 @@ "type": "string" } } + }, + "sourceFormat": { + "description": "SourceFormat defines the format of the DataImportCron-created disk image sources", + "type": "string" } } } } } - } + }, + "subresources": {}, + "additionalPrinterColumns": [ + { + "name": "Format", + "type": "string", + "description": "The format in which created sources are saved", + "jsonPath": ".status.sourceFormat" + } + ] } ], "conversion": {} @@ -72686,6 +77624,14 @@ ] } }, + "additionalColumns": [ + { + "name": "Format", + "type": "string", + "description": "The format in which created sources are saved", + "jsonPath": ".status.sourceFormat" + } + ], "short": "DataImportCron", "apiGroup": "cdi.kubevirt.io", "apiKind": "DataImportCron", @@ -72714,17 +77660,12 @@ "name": "io.kubevirt.cdi.v1beta1.DataSource", "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": "DataSourceSpec defines specification for DataSource", "type": "object", + "description": "DataSourceSpec defines specification for DataSource", "required": [ "source" ], @@ -72773,6 +77714,14 @@ } } }, + "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" + }, "status": { "description": "DataSourceStatus provides the most recently observed status of the DataSource", "type": "object", @@ -73099,17 +78048,12 @@ "name": "io.kubevirt.cdi.v1beta1.DataVolume", "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": "DataVolumeSpec defines the DataVolume type specification", "type": "object", + "description": "DataVolumeSpec defines the DataVolume type specification", "properties": { "checkpoints": { "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.", @@ -73218,7 +78162,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -73243,15 +78187,31 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -73605,7 +78565,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -73630,15 +78590,31 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -73703,8 +78679,8 @@ } }, "status": { - "description": "DataVolumeStatus contains the current status of the DataVolume", "type": "object", + "description": "DataVolumeStatus contains the current status of the DataVolume", "properties": { "claimName": { "description": "ClaimName is the name of the underlying PVC used by the DataVolume.", @@ -73758,6 +78734,14 @@ "format": "int32" } } + }, + "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" } }, "description": "DataVolume is an abstraction on top of PersistentVolumeClaims to allow easy population of those PersistentVolumeClaims with relation to VirtualMachines", @@ -73928,7 +78912,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -73965,7 +78949,7 @@ } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -74331,7 +79315,7 @@ "type": "object", "properties": { "claims": { - "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable.", + "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers.", "type": "array", "items": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", @@ -74368,7 +79352,7 @@ } }, "requests": { - "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", @@ -74609,17 +79593,12 @@ "name": "io.kubevirt.cdi.v1beta1.ObjectTransfer", "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": "ObjectTransferSpec specifies the source/target of the transfer", "type": "object", + "description": "ObjectTransferSpec specifies the source/target of the transfer", "required": [ "source", "target" @@ -74672,8 +79651,8 @@ } }, "status": { - "description": "ObjectTransferStatus is the status of the ObjectTransfer", "type": "object", + "description": "ObjectTransferStatus is the status of the ObjectTransfer", "properties": { "conditions": { "type": "array", @@ -74721,6 +79700,14 @@ "type": "string" } } + }, + "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" } }, "description": "ObjectTransfer is the cluster scoped object transfer resource", @@ -74963,35 +79950,46 @@ "name": "io.kubevirt.cdi.v1beta1.StorageProfile", "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": "StorageProfileSpec defines specification for StorageProfile", "type": "object", + "description": "StorageProfileSpec defines specification for StorageProfile", "properties": { "claimPropertySets": { "description": "ClaimPropertySets is a provided set of properties applicable to PVC", "type": "array", + "maxItems": 8, "items": { "description": "ClaimPropertySet is a set of properties applicable to PVC", "type": "object", + "required": [ + "accessModes", + "volumeMode" + ], "properties": { "accessModes": { "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "type": "array", + "maxItems": 4, "items": { "type": "string" - } + }, + "x-kubernetes-validations": [ + { + "rule": "self.all(am, am in ['ReadWriteOnce', 'ReadOnlyMany', 'ReadWriteMany', 'ReadWriteOncePod'])", + "message": "Illegal AccessMode" + } + ] }, "volumeMode": { "description": "VolumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", - "type": "string" + "type": "string", + "enum": [ + "Block", + "Filesystem" + ] } } } @@ -75003,9 +80001,21 @@ "dataImportCronSourceFormat": { "description": "DataImportCronSourceFormat defines the format of the DataImportCron-created disk image sources", "type": "string" + }, + "snapshotClass": { + "description": "SnapshotClass is optional specific VolumeSnapshotClass for CloneStrategySnapshot. If not set, a VolumeSnapshotClass is chosen according to the provisioner.", + "type": "string" } } }, + "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" + }, "status": { "description": "StorageProfileStatus provides the most recently observed status of the StorageProfile", "type": "object", @@ -75013,20 +80023,36 @@ "claimPropertySets": { "description": "ClaimPropertySets computed from the spec and detected in the system", "type": "array", + "maxItems": 8, "items": { "description": "ClaimPropertySet is a set of properties applicable to PVC", "type": "object", + "required": [ + "accessModes", + "volumeMode" + ], "properties": { "accessModes": { "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "type": "array", + "maxItems": 4, "items": { "type": "string" - } + }, + "x-kubernetes-validations": [ + { + "rule": "self.all(am, am in ['ReadWriteOnce', 'ReadOnlyMany', 'ReadWriteMany', 'ReadWriteOncePod'])", + "message": "Illegal AccessMode" + } + ] }, "volumeMode": { "description": "VolumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", - "type": "string" + "type": "string", + "enum": [ + "Block", + "Filesystem" + ] } } } @@ -75043,6 +80069,10 @@ "description": "The Storage class provisioner plugin name", "type": "string" }, + "snapshotClass": { + "description": "SnapshotClass is optional specific VolumeSnapshotClass for CloneStrategySnapshot. If not set, a VolumeSnapshotClass is chosen according to the provisioner.", + "type": "string" + }, "storageClass": { "description": "The StorageClass name for which capabilities are defined", "type": "string" @@ -75107,20 +80137,36 @@ "claimPropertySets": { "description": "ClaimPropertySets is a provided set of properties applicable to PVC", "type": "array", + "maxItems": 8, "items": { "description": "ClaimPropertySet is a set of properties applicable to PVC", "type": "object", + "required": [ + "accessModes", + "volumeMode" + ], "properties": { "accessModes": { "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "type": "array", + "maxItems": 4, "items": { "type": "string" - } + }, + "x-kubernetes-validations": [ + { + "rule": "self.all(am, am in ['ReadWriteOnce', 'ReadOnlyMany', 'ReadWriteMany', 'ReadWriteOncePod'])", + "message": "Illegal AccessMode" + } + ] }, "volumeMode": { "description": "VolumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", - "type": "string" + "type": "string", + "enum": [ + "Block", + "Filesystem" + ] } } } @@ -75132,6 +80178,10 @@ "dataImportCronSourceFormat": { "description": "DataImportCronSourceFormat defines the format of the DataImportCron-created disk image sources", "type": "string" + }, + "snapshotClass": { + "description": "SnapshotClass is optional specific VolumeSnapshotClass for CloneStrategySnapshot. If not set, a VolumeSnapshotClass is chosen according to the provisioner.", + "type": "string" } } }, @@ -75142,20 +80192,36 @@ "claimPropertySets": { "description": "ClaimPropertySets computed from the spec and detected in the system", "type": "array", + "maxItems": 8, "items": { "description": "ClaimPropertySet is a set of properties applicable to PVC", "type": "object", + "required": [ + "accessModes", + "volumeMode" + ], "properties": { "accessModes": { "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "type": "array", + "maxItems": 4, "items": { "type": "string" - } + }, + "x-kubernetes-validations": [ + { + "rule": "self.all(am, am in ['ReadWriteOnce', 'ReadOnlyMany', 'ReadWriteMany', 'ReadWriteOncePod'])", + "message": "Illegal AccessMode" + } + ] }, "volumeMode": { "description": "VolumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", - "type": "string" + "type": "string", + "enum": [ + "Block", + "Filesystem" + ] } } } @@ -75172,6 +80238,10 @@ "description": "The Storage class provisioner plugin name", "type": "string" }, + "snapshotClass": { + "description": "SnapshotClass is optional specific VolumeSnapshotClass for CloneStrategySnapshot. If not set, a VolumeSnapshotClass is chosen according to the provisioner.", + "type": "string" + }, "storageClass": { "description": "The StorageClass name for which capabilities are defined", "type": "string" @@ -75226,17 +80296,12 @@ "name": "io.kubevirt.cdi.v1beta1.VolumeCloneSource", "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": "VolumeCloneSourceSpec defines the Spec field for VolumeCloneSource", "type": "object", + "description": "VolumeCloneSourceSpec defines the Spec field for VolumeCloneSource", "required": [ "source" ], @@ -75273,6 +80338,14 @@ "x-kubernetes-map-type": "atomic" } } + }, + "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" } }, "description": "VolumeCloneSource refers to a PVC/VolumeSnapshot of any storageclass/volumemode to be used as the source of a new PVC", @@ -75411,22 +80484,43 @@ "name": "io.kubevirt.cdi.v1beta1.VolumeImportSource", "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": "VolumeImportSourceSpec defines the Spec field for VolumeImportSource", "type": "object", + "description": "VolumeImportSourceSpec defines the Spec field for VolumeImportSource", "properties": { + "checkpoints": { + "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.", + "type": "array", + "items": { + "description": "DataVolumeCheckpoint defines a stage in a warm migration.", + "type": "object", + "required": [ + "current", + "previous" + ], + "properties": { + "current": { + "description": "Current is the identifier of the snapshot created for this checkpoint.", + "type": "string" + }, + "previous": { + "description": "Previous is the identifier of the snapshot from the previous checkpoint.", + "type": "string" + } + } + } + }, "contentType": { "description": "ContentType represents the type of the imported data (Kubevirt or archive)", "type": "string" }, + "finalCheckpoint": { + "description": "FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.", + "type": "boolean" + }, "preallocation": { "description": "Preallocation controls whether storage for the target PVC should be allocated in advance.", "type": "boolean" @@ -75595,9 +80689,21 @@ } } } + }, + "targetClaim": { + "description": "TargetClaim the name of the specific claim to be populated with a multistage import.", + "type": "string" } } }, + "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" + }, "status": { "description": "VolumeImportSourceStatus provides the most recently observed status of the VolumeImportSource", "type": "object" @@ -75657,10 +80763,36 @@ "description": "VolumeImportSourceSpec defines the Spec field for VolumeImportSource", "type": "object", "properties": { + "checkpoints": { + "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.", + "type": "array", + "items": { + "description": "DataVolumeCheckpoint defines a stage in a warm migration.", + "type": "object", + "required": [ + "current", + "previous" + ], + "properties": { + "current": { + "description": "Current is the identifier of the snapshot created for this checkpoint.", + "type": "string" + }, + "previous": { + "description": "Previous is the identifier of the snapshot from the previous checkpoint.", + "type": "string" + } + } + } + }, "contentType": { "description": "ContentType represents the type of the imported data (Kubevirt or archive)", "type": "string" }, + "finalCheckpoint": { + "description": "FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.", + "type": "boolean" + }, "preallocation": { "description": "Preallocation controls whether storage for the target PVC should be allocated in advance.", "type": "boolean" @@ -75829,6 +80961,10 @@ } } } + }, + "targetClaim": { + "description": "TargetClaim the name of the specific claim to be populated with a multistage import.", + "type": "string" } } }, @@ -75884,17 +81020,12 @@ "name": "io.kubevirt.cdi.v1beta1.VolumeUploadSource", "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": "VolumeUploadSourceSpec defines specification for VolumeUploadSource", "type": "object", + "description": "VolumeUploadSourceSpec defines specification for VolumeUploadSource", "properties": { "contentType": { "description": "ContentType represents the type of the upload data (Kubevirt or archive)", @@ -75906,6 +81037,14 @@ } } }, + "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" + }, "status": { "description": "VolumeUploadSourceStatus provides the most recently observed status of the VolumeUploadSource", "type": "object" diff --git a/data/mariadb.json b/data/mariadb.json index 8b18e94..a6848ec 100644 --- a/data/mariadb.json +++ b/data/mariadb.json @@ -6,17 +6,12 @@ "name": "io.mmontes.mariadb.v1alpha1.Backup", "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": "BackupSpec defines the desired state of Backup", "type": "object", + "description": "BackupSpec defines the desired state of Backup", "required": [ "mariaDbRef", "storage" @@ -687,7 +682,8 @@ }, "backoffLimit": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 5 }, "mariaDbRef": { "type": "object", @@ -721,14 +717,16 @@ "type": "string" }, "waitForIt": { - "type": "boolean" + "type": "boolean", + "default": true } }, "x-kubernetes-map-type": "atomic" }, "maxRetentionDays": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 30 }, "nodeSelector": { "type": "object", @@ -766,7 +764,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -774,14 +780,23 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } }, "restartPolicy": { "description": "RestartPolicy describes how the container should be restarted. Only one of the following restart policies may be specified. If none of the following policies is specified, the default one is RestartPolicyAlways.", - "type": "string" + "type": "string", + "default": "OnFailure" }, "schedule": { "type": "object", @@ -793,7 +808,8 @@ "type": "string" }, "suspend": { - "type": "boolean" + "type": "boolean", + "default": false } } }, @@ -890,7 +906,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -898,7 +922,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1267,7 +1299,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -1292,7 +1332,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -1401,7 +1449,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -1409,7 +1465,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1903,7 +1967,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -2271,8 +2343,8 @@ } }, "status": { - "description": "BackupStatus defines the observed state of Backup", "type": "object", + "description": "BackupStatus defines the observed state of Backup", "properties": { "conditions": { "type": "array", @@ -2329,6 +2401,14 @@ } } } + }, + "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" } }, "description": "Backup is the Schema for the backups API", @@ -4869,17 +4949,12 @@ "name": "io.mmontes.mariadb.v1alpha1.Connection", "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": "ConnectionSpec defines the desired state of Connection", "type": "object", + "description": "ConnectionSpec defines the desired state of Connection", "required": [ "mariaDbRef", "passwordSecretKeyRef", @@ -4932,7 +5007,8 @@ "type": "string" }, "waitForIt": { - "type": "boolean" + "type": "boolean", + "default": true } }, "x-kubernetes-map-type": "atomic" @@ -5015,8 +5091,8 @@ } }, "status": { - "description": "ConnectionStatus defines the observed state of Connection", "type": "object", + "description": "ConnectionStatus defines the observed state of Connection", "properties": { "conditions": { "type": "array", @@ -5073,6 +5149,14 @@ } } } + }, + "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" } }, "description": "Connection is the Schema for the connections API", @@ -5428,26 +5512,23 @@ "name": "io.mmontes.mariadb.v1alpha1.Database", "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": "DatabaseSpec defines the desired state of Database", "type": "object", + "description": "DatabaseSpec defines the desired state of Database", "required": [ "mariaDbRef" ], "properties": { "characterSet": { - "type": "string" + "type": "string", + "default": "utf8" }, "collate": { - "type": "string" + "type": "string", + "default": "utf8_general_ci" }, "mariaDbRef": { "type": "object", @@ -5481,7 +5562,8 @@ "type": "string" }, "waitForIt": { - "type": "boolean" + "type": "boolean", + "default": true } }, "x-kubernetes-map-type": "atomic" @@ -5496,8 +5578,8 @@ } }, "status": { - "description": "DatabaseStatus defines the observed state of Database", "type": "object", + "description": "DatabaseStatus defines the observed state of Database", "properties": { "conditions": { "type": "array", @@ -5554,6 +5636,14 @@ } } } + }, + "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" } }, "description": "Database is the Schema for the databases API", @@ -5853,17 +5943,12 @@ "name": "io.mmontes.mariadb.v1alpha1.Grant", "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": "GrantSpec defines the desired state of Grant", "type": "object", + "description": "GrantSpec defines the desired state of Grant", "required": [ "mariaDbRef", "privileges", @@ -5871,10 +5956,12 @@ ], "properties": { "database": { - "type": "string" + "type": "string", + "default": "*" }, "grantOption": { - "type": "boolean" + "type": "boolean", + "default": false }, "host": { "type": "string" @@ -5911,7 +5998,8 @@ "type": "string" }, "waitForIt": { - "type": "boolean" + "type": "boolean", + "default": true } }, "x-kubernetes-map-type": "atomic" @@ -5927,7 +6015,8 @@ "type": "string" }, "table": { - "type": "string" + "type": "string", + "default": "*" }, "username": { "type": "string" @@ -5935,8 +6024,8 @@ } }, "status": { - "description": "GrantStatus defines the observed state of Grant", "type": "object", + "description": "GrantStatus defines the observed state of Grant", "properties": { "conditions": { "type": "array", @@ -5993,6 +6082,14 @@ } } } + }, + "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" } }, "description": "Grant is the Schema for the grants API", @@ -6317,17 +6414,12 @@ "name": "io.mmontes.mariadb.v1alpha1.MariaDB", "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": "MariaDBSpec defines the desired state of MariaDB", "type": "object", + "description": "MariaDBSpec defines the desired state of MariaDB", "required": [ "image", "rootPasswordSecretKeyRef", @@ -7321,7 +7413,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -7346,7 +7446,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -7455,7 +7563,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -7463,7 +7579,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -7957,7 +8081,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -8442,7 +8574,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -8619,7 +8759,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -8707,7 +8855,8 @@ }, "imagePullPolicy": { "description": "PullPolicy describes a policy for if/when to pull a container image", - "type": "string" + "type": "string", + "default": "IfNotPresent" }, "kubernetesAuth": { "description": "KubernetesAuth to be used by the agent container", @@ -8802,7 +8951,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -8838,7 +8995,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -8938,7 +9103,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -8974,7 +9147,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -9020,7 +9201,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -9028,7 +9217,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -9289,7 +9486,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -9373,7 +9578,8 @@ }, "imagePullPolicy": { "description": "PullPolicy describes a policy for if/when to pull a container image", - "type": "string" + "type": "string", + "default": "IfNotPresent" }, "livenessProbe": { "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", @@ -9454,7 +9660,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -9490,7 +9704,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -9585,7 +9807,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -9621,7 +9851,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -9667,7 +9905,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -9675,7 +9921,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -9988,7 +10242,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -9996,7 +10258,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -10065,7 +10335,8 @@ }, "imagePullPolicy": { "description": "PullPolicy describes a policy for if/when to pull a container image", - "type": "string" + "type": "string", + "default": "IfNotPresent" }, "imagePullSecrets": { "type": "array", @@ -10193,7 +10464,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -10277,7 +10556,8 @@ }, "imagePullPolicy": { "description": "PullPolicy describes a policy for if/when to pull a container image", - "type": "string" + "type": "string", + "default": "IfNotPresent" }, "livenessProbe": { "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", @@ -10358,7 +10638,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -10394,7 +10682,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10489,7 +10785,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -10525,7 +10829,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10571,7 +10883,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -10579,7 +10899,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -10822,7 +11150,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -10858,7 +11194,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10974,7 +11318,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -11058,7 +11410,8 @@ }, "imagePullPolicy": { "description": "PullPolicy describes a policy for if/when to pull a container image", - "type": "string" + "type": "string", + "default": "IfNotPresent" }, "livenessProbe": { "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", @@ -11139,7 +11492,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -11175,7 +11536,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -11193,7 +11562,8 @@ }, "port": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 9104 }, "readinessProbe": { "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", @@ -11274,7 +11644,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -11310,7 +11688,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -11356,7 +11742,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -11364,7 +11758,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11609,10 +12011,26 @@ "type": "object", "properties": { "maxUnavailable": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "minAvailable": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -11738,7 +12156,8 @@ }, "port": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 3306 }, "primaryConnection": { "type": "object", @@ -11923,7 +12342,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -11959,7 +12386,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -11977,7 +12412,8 @@ }, "replicas": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 1 }, "replication": { "description": "Replication allows you to enable single-master HA via semi-synchronours replication in your MariaDB cluster.", @@ -12085,7 +12521,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -12093,7 +12537,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -12421,7 +12873,15 @@ "properties": { "maxUnavailable": { "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "partition": { "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.", @@ -12540,7 +13000,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -12548,7 +13016,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -12959,7 +13435,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -12984,7 +13468,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -13093,7 +13585,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -13101,7 +13601,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -13599,7 +14107,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -13936,8 +14452,8 @@ } }, "status": { - "description": "MariaDBStatus defines the observed state of MariaDB", "type": "object", + "description": "MariaDBStatus defines the observed state of MariaDB", "properties": { "conditions": { "type": "array", @@ -14065,6 +14581,14 @@ } } } + }, + "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" } }, "description": "MariaDB is the Schema for the mariadbs API", @@ -22383,17 +22907,12 @@ "name": "io.mmontes.mariadb.v1alpha1.Restore", "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": "RestoreSpec defines the desired state of restore", "type": "object", + "description": "RestoreSpec defines the desired state of restore", "required": [ "mariaDbRef" ], @@ -23057,7 +23576,8 @@ }, "backoffLimit": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 5 }, "backupRef": { "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", @@ -23105,7 +23625,8 @@ "type": "string" }, "waitForIt": { - "type": "boolean" + "type": "boolean", + "default": true } }, "x-kubernetes-map-type": "atomic" @@ -23146,7 +23667,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -23154,14 +23683,23 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } }, "restartPolicy": { "description": "RestartPolicy describes how the container should be restarted. Only one of the following restart policies may be specified. If none of the following policies is specified, the default one is RestartPolicyAlways.", - "type": "string" + "type": "string", + "default": "OnFailure" }, "tolerations": { "type": "array", @@ -23500,7 +24038,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -23525,7 +24071,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -23634,7 +24188,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -23642,7 +24204,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -24136,7 +24706,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -24472,8 +25050,8 @@ } }, "status": { - "description": "RestoreStatus defines the observed state of restore", "type": "object", + "description": "RestoreStatus defines the observed state of restore", "properties": { "conditions": { "type": "array", @@ -24530,6 +25108,14 @@ } } } + }, + "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" } }, "description": "Restore is the Schema for the restores API", @@ -26876,17 +27462,12 @@ "name": "io.mmontes.mariadb.v1alpha1.SqlJob", "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": "SqlJobSpec defines the desired state of SqlJob", "type": "object", + "description": "SqlJobSpec defines the desired state of SqlJob", "required": [ "mariaDbRef", "passwordSecretKeyRef", @@ -27552,7 +28133,8 @@ }, "backoffLimit": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 5 }, "database": { "type": "string" @@ -27603,7 +28185,8 @@ "type": "string" }, "waitForIt": { - "type": "boolean" + "type": "boolean", + "default": true } }, "x-kubernetes-map-type": "atomic" @@ -27666,7 +28249,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -27674,14 +28265,23 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } }, "restartPolicy": { "description": "RestartPolicy describes how the container should be restarted. Only one of the following restart policies may be specified. If none of the following policies is specified, the default one is RestartPolicyAlways.", - "type": "string" + "type": "string", + "default": "OnFailure" }, "schedule": { "type": "object", @@ -27693,7 +28293,8 @@ "type": "string" }, "suspend": { - "type": "boolean" + "type": "boolean", + "default": false } } }, @@ -27758,8 +28359,8 @@ } }, "status": { - "description": "SqlJobStatus defines the observed state of SqlJob", "type": "object", + "description": "SqlJobStatus defines the observed state of SqlJob", "properties": { "conditions": { "type": "array", @@ -27816,6 +28417,14 @@ } } } + }, + "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" } }, "description": "SqlJob is the Schema for the sqljobs API", @@ -28916,17 +29525,12 @@ "name": "io.mmontes.mariadb.v1alpha1.User", "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": "UserSpec defines the desired state of User", "type": "object", + "description": "UserSpec defines the desired state of User", "required": [ "mariaDbRef", "passwordSecretKeyRef" @@ -28968,14 +29572,16 @@ "type": "string" }, "waitForIt": { - "type": "boolean" + "type": "boolean", + "default": true } }, "x-kubernetes-map-type": "atomic" }, "maxUserConnections": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 10 }, "name": { "type": "string", @@ -29009,8 +29615,8 @@ } }, "status": { - "description": "UserStatus defines the observed state of User", "type": "object", + "description": "UserStatus defines the observed state of User", "properties": { "conditions": { "type": "array", @@ -29067,6 +29673,14 @@ } } } + }, + "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" } }, "description": "User is the Schema for the users API", diff --git a/data/mongodb.json b/data/mongodb.json index fb9849b..fc71194 100644 --- a/data/mongodb.json +++ b/data/mongodb.json @@ -6,17 +6,12 @@ "name": "com.mongodb.mongodbcommunity.v1.MongoDBCommunity", "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": "MongoDBCommunitySpec defines the desired state of MongoDB", "type": "object", + "description": "MongoDBCommunitySpec defines the desired state of MongoDB", "required": [ "security", "type", @@ -25,11 +20,15 @@ "properties": { "additionalConnectionStringConfig": { "description": "Additional options to be appended to the connection string. These options apply to the entire resource and to each user.", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true }, "additionalMongodConfig": { "description": "AdditionalMongodConfig is additional configuration that can be passed to each data-bearing mongod at runtime. Uses the same structure as the mongod configuration file: https://www.mongodb.com/docs/manual/reference/configuration-options/", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true }, "agent": { "description": "AgentConfiguration sets options for the MongoDB automation agent", @@ -272,7 +271,11 @@ "X509" ] }, - "ignoreUnknownUsers": {}, + "ignoreUnknownUsers": { + "type": "boolean", + "default": true, + "nullable": true + }, "modes": { "description": "Modes is an array specifying which authentication methods should be enabled.", "type": "array", @@ -474,7 +477,8 @@ } }, "spec": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" } } }, @@ -497,7 +501,9 @@ "properties": { "additionalConnectionStringConfig": { "description": "Additional options to be appended to the connection string. These options apply only to this user and will override any existing options in the resource.", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true }, "connectionStringSecretName": { "description": "ConnectionStringSecretName is the name of the secret object created by the operator which exposes the connection strings for the user. If provided, this secret must be different for each user in a deployment.", @@ -505,7 +511,8 @@ }, "db": { "description": "DB is the database the user is stored in. Defaults to \"admin\"", - "type": "string" + "type": "string", + "default": "admin" }, "name": { "description": "Name is the username of the user", @@ -565,8 +572,8 @@ } }, "status": { - "description": "MongoDBCommunityStatus defines the observed state of MongoDB", "type": "object", + "description": "MongoDBCommunityStatus defines the observed state of MongoDB", "required": [ "currentMongoDBMembers", "currentStatefulSetReplicas", @@ -599,6 +606,14 @@ "type": "string" } } + }, + "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" } }, "description": "MongoDBCommunity is the Schema for the mongodbs API", diff --git a/data/monitoring.json b/data/monitoring.json index 3eddfe7..531b757 100644 --- a/data/monitoring.json +++ b/data/monitoring.json @@ -6,17 +6,12 @@ "name": "com.coreos.monitoring.v1.Alertmanager", "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": "Specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "additionalPeers": { "description": "AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster.", @@ -692,7 +687,8 @@ "enum": [ "OnNamespace", "None" - ] + ], + "default": "OnNamespace" } } }, @@ -1516,7 +1512,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -1664,7 +1668,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -1685,7 +1697,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1747,7 +1767,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -1768,7 +1796,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1855,7 +1891,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -1891,7 +1935,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -1941,7 +1993,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -2030,7 +2083,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -2066,7 +2127,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -2135,7 +2204,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -2143,7 +2220,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2350,7 +2435,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -2386,7 +2479,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -2655,7 +2756,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -2803,7 +2912,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -2824,7 +2941,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2886,7 +3011,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -2907,7 +3040,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2994,7 +3135,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -3030,7 +3179,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -3080,7 +3237,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -3169,7 +3327,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -3205,7 +3371,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -3274,7 +3448,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -3282,7 +3464,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -3489,7 +3679,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -3525,7 +3723,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -3694,7 +3900,8 @@ }, "portName": { "description": "Port name used for the pods and governing service. Defaults to `web`.", - "type": "string" + "type": "string", + "default": "web" }, "priorityClassName": { "description": "Priority class assigned to the Pods", @@ -3735,7 +3942,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -3743,7 +3958,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -3751,7 +3974,8 @@ "retention": { "description": "Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours).", "type": "string", - "pattern": "^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" + "pattern": "^(0|(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "default": "120h" }, "routePrefix": { "description": "The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`.", @@ -3911,7 +4135,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4020,7 +4252,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -4028,7 +4268,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4220,7 +4468,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -4228,7 +4484,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4315,7 +4579,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "capacity": { @@ -4323,7 +4595,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "conditions": { @@ -4857,7 +5137,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -4882,7 +5170,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4991,7 +5287,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -4999,7 +5303,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -5497,7 +5809,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -6057,8 +6377,8 @@ } }, "status": { - "description": "Most recent observed status of the Alertmanager cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Most recent observed status of the Alertmanager cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "availableReplicas", "paused", @@ -6137,6 +6457,14 @@ "format": "int32" } } + }, + "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" } }, "description": "Alertmanager describes an Alertmanager cluster.", @@ -12785,17 +13113,12 @@ "name": "com.coreos.monitoring.v1.PodMonitor", "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": "Specification of desired Pod selection for target discovery by Prometheus.", "type": "object", + "description": "Specification of desired Pod selection for target discovery by Prometheus.", "required": [ "selector" ], @@ -13020,7 +13343,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -13212,7 +13536,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -13262,7 +13587,15 @@ }, "targetPort": { "description": "Name or number of the target port of the `Pod` object behind the Service, the port must be specified with container port property. \n Deprecated: use 'port' instead.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "tlsConfig": { "description": "TLS configuration to use when scraping the target.", @@ -13468,6 +13801,14 @@ "format": "int64" } } + }, + "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" } }, "description": "PodMonitor defines monitoring for a set of pods.", @@ -14264,17 +14605,12 @@ "name": "com.coreos.monitoring.v1.Probe", "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": "Specification of desired Ingress selection for target discovery by Prometheus.", "type": "object", + "description": "Specification of desired Ingress selection for target discovery by Prometheus.", "properties": { "authorization": { "description": "Authorization section for this endpoint", @@ -14442,7 +14778,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -14592,7 +14929,8 @@ "properties": { "path": { "description": "Path to collect metrics from. Defaults to `/probe`.", - "type": "string" + "type": "string", + "default": "/probe" }, "proxyUrl": { "description": "Optional ProxyURL.", @@ -14685,7 +15023,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -14809,7 +15148,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -14992,6 +15332,14 @@ } } } + }, + "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" } }, "description": "Probe defines monitoring for a set of static targets or ingresses.", @@ -15827,17 +16175,12 @@ "name": "com.coreos.monitoring.v1.Prometheus", "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": "Specification of the desired behavior of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired behavior of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "additionalAlertManagerConfigs": { "description": "AdditionalAlertManagerConfigs specifies a key of a Secret containing additional Prometheus Alertmanager configurations. The Alertmanager configurations are appended to the configuration generated by the Prometheus Operator. They must be formatted according to the official Prometheus documentation: \n https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config \n The user is responsible for making sure that the configurations are valid \n Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.", @@ -16711,7 +17054,15 @@ }, "port": { "description": "Port on which the Alertmanager API is exposed.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use when firing alerts.", @@ -17321,7 +17672,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -17469,7 +17828,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -17490,7 +17857,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -17552,7 +17927,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -17573,7 +17956,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -17660,7 +18051,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -17696,7 +18095,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -17746,7 +18153,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -17835,7 +18243,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -17871,7 +18287,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -17940,7 +18364,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -17948,7 +18380,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -18155,7 +18595,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -18191,7 +18639,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -18355,7 +18811,8 @@ "evaluationInterval": { "description": "Interval between rule evaluations. Default: \"30s\"", "type": "string", - "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" + "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "default": "30s" }, "excludedFromEnforcement": { "description": "List of references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects to be excluded from enforcing a namespace label of origin. \n It is only applicable if `spec.enforcedNamespaceLabel` set to true.", @@ -18373,7 +18830,8 @@ "type": "string", "enum": [ "monitoring.coreos.com" - ] + ], + "default": "monitoring.coreos.com" }, "name": { "description": "Name of the referent. When not set, all resources in the namespace are matched.", @@ -18586,7 +19044,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -18734,7 +19200,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -18755,7 +19229,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -18817,7 +19299,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -18838,7 +19328,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -18925,7 +19423,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -18961,7 +19467,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -19011,7 +19525,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -19100,7 +19615,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -19136,7 +19659,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -19205,7 +19736,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -19213,7 +19752,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -19420,7 +19967,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -19456,7 +20011,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -19766,7 +20329,8 @@ }, "portName": { "description": "Port name used for the pods and governing service. Default: \"web\"", - "type": "string" + "type": "string", + "default": "web" }, "priorityClassName": { "description": "Priority class assigned to the Pods.", @@ -20936,7 +21500,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -21013,7 +21578,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -21021,7 +21594,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -21244,7 +21825,8 @@ "scrapeInterval": { "description": "Interval between consecutive scrapes. \n Default: \"30s\"", "type": "string", - "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" + "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "default": "30s" }, "scrapeTimeout": { "description": "Number of seconds to wait until a scrape request times out.", @@ -21496,7 +22078,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -21605,7 +22195,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -21613,7 +22211,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -21805,7 +22411,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -21813,7 +22427,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -21900,7 +22522,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "capacity": { @@ -21908,7 +22538,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "conditions": { @@ -22002,7 +22640,8 @@ "blockSize": { "description": "BlockDuration controls the size of TSDB blocks produced by Prometheus. The default value is 2h to match the upstream Prometheus defaults. \n WARNING: Changing the block duration can impact the performance and efficiency of the entire Prometheus/Thanos stack due to how it interacts with memory and Thanos compactors. It is recommended to keep this value set to a multiple of 120 times your longest scrape or rule interval. For example, 30s * 120 = 1h.", "type": "string", - "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" + "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "default": "2h" }, "getConfigInterval": { "description": "How often to retrieve the Prometheus configuration.", @@ -22263,7 +22902,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -22271,7 +22918,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -22525,7 +23180,15 @@ "samplingFraction": { "description": "Sets the probability a given trace will be sampled. Must be a float from 0 through 1.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "timeout": { "description": "Maximum time the exporter will wait for each batch export.", @@ -23048,7 +23711,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -23073,7 +23744,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -23182,7 +23861,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -23190,7 +23877,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -23688,7 +24383,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -24252,8 +24955,8 @@ } }, "status": { - "description": "Most recent observed status of the Prometheus cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Most recent observed status of the Prometheus cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "availableReplicas", "paused", @@ -24385,6 +25088,14 @@ "format": "int32" } } + }, + "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" } }, "description": "Prometheus defines a Prometheus deployment.", @@ -33500,17 +34211,12 @@ "name": "com.coreos.monitoring.v1.PrometheusRule", "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": "Specification of desired alerting rule definitions for Prometheus.", "type": "object", + "description": "Specification of desired alerting rule definitions for Prometheus.", "properties": { "groups": { "description": "Content of Prometheus rule file", @@ -33564,7 +34270,15 @@ }, "expr": { "description": "PromQL expression to evaluate.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "for": { "description": "Alerts are considered firing once they have been returned for this long.", @@ -33599,6 +34313,14 @@ "x-kubernetes-list-type": "map" } } + }, + "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" } }, "description": "PrometheusRule defines recording and alerting rules for a Prometheus instance", @@ -33809,17 +34531,12 @@ "name": "com.coreos.monitoring.v1.ServiceMonitor", "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": "Specification of desired Service selection for target discovery by Prometheus.", "type": "object", + "description": "Specification of desired Service selection for target discovery by Prometheus.", "required": [ "selector" ], @@ -34007,7 +34724,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -34199,7 +34917,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -34249,7 +34968,15 @@ }, "targetPort": { "description": "Name or number of the target port of the `Pod` object behind the Service, the port must be specified with container port property. \n Deprecated: use `port` instead.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "tlsConfig": { "description": "TLS configuration to use when scraping the target.", @@ -34515,6 +35242,14 @@ "format": "int64" } } + }, + "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" } }, "description": "ServiceMonitor defines monitoring for a set of services.", @@ -35334,17 +36069,12 @@ "name": "com.coreos.monitoring.v1.ThanosRuler", "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": "Specification of the desired behavior of the ThanosRuler cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired behavior of the ThanosRuler cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "additionalArgs": { "description": "AdditionalArgs allows setting additional arguments for the ThanosRuler container. It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the ThanosRuler container which may cause issues if they are invalid or not supported by the given ThanosRuler version. In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument the reconciliation will fail and an error will be logged.", @@ -36191,7 +36921,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -36339,7 +37077,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -36360,7 +37106,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -36422,7 +37176,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -36443,7 +37205,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -36530,7 +37300,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -36566,7 +37344,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -36616,7 +37402,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -36705,7 +37492,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -36741,7 +37536,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -36810,7 +37613,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -36818,7 +37629,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -37025,7 +37844,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -37061,7 +37888,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -37171,7 +38006,8 @@ "evaluationInterval": { "description": "Interval between consecutive evaluations.", "type": "string", - "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" + "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "default": "15s" }, "excludedFromEnforcement": { "description": "List of references to PrometheusRule objects to be excluded from enforcing a namespace label of origin. Applies only if enforcedNamespaceLabel set to true.", @@ -37189,7 +38025,8 @@ "type": "string", "enum": [ "monitoring.coreos.com" - ] + ], + "default": "monitoring.coreos.com" }, "name": { "description": "Name of the referent. When not set, all resources in the namespace are matched.", @@ -37524,7 +38361,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -37672,7 +38517,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -37693,7 +38546,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -37755,7 +38616,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -37776,7 +38645,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -37863,7 +38740,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -37899,7 +38784,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -37949,7 +38842,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -38038,7 +38932,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -38074,7 +38976,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -38143,7 +39053,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -38151,7 +39069,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -38358,7 +39284,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -38394,7 +39328,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -38596,7 +39538,8 @@ }, "portName": { "description": "Port name used for the pods and governing service. Defaults to `web`.", - "type": "string" + "type": "string", + "default": "web" }, "priorityClassName": { "description": "Priority class assigned to the Pods", @@ -38688,7 +39631,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -38696,7 +39647,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -38704,7 +39663,8 @@ "retention": { "description": "Time duration ThanosRuler shall retain data for. Default is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years).", "type": "string", - "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" + "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "default": "24h" }, "routePrefix": { "description": "The route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path.", @@ -38939,7 +39899,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -39048,7 +40016,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -39056,7 +40032,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -39248,7 +40232,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -39256,7 +40248,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -39343,7 +40343,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "capacity": { @@ -39351,7 +40359,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "conditions": { @@ -39907,7 +40923,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -39932,7 +40956,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -40041,7 +41073,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -40049,7 +41089,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -40547,7 +41595,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -40884,8 +41940,8 @@ } }, "status": { - "description": "Most recent observed status of the ThanosRuler cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Most recent observed status of the ThanosRuler cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "availableReplicas", "paused", @@ -40964,6 +42020,14 @@ "format": "int32" } } + }, + "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" } }, "description": "ThanosRuler defines a ThanosRuler deployment.", @@ -47112,17 +48176,12 @@ "name": "com.coreos.monitoring.v1alpha1.AlertmanagerConfig", "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": "AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the `namespace` label is equal to the namespace of the AlertmanagerConfig resource.", "type": "object", + "description": "AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the `namespace` label is equal to the namespace of the AlertmanagerConfig resource.", "properties": { "inhibitRules": { "description": "List of inhibition rules. The rules will only apply to alerts matching the resource's namespace.", @@ -52999,6 +54058,14 @@ } } } + }, + "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" } }, "description": "AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems.", @@ -58989,17 +60056,12 @@ "name": "com.coreos.monitoring.v1alpha1.PrometheusAgent", "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": "Specification of the desired behavior of the Prometheus agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Specification of the desired behavior of the Prometheus agent. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "properties": { "additionalArgs": { "description": "AdditionalArgs allows setting additional arguments for the 'prometheus' container. \n It is intended for e.g. activating hidden flags which are not supported by the dedicated configuration options yet. The arguments are passed as-is to the Prometheus container which may cause issues if they are invalid or not supported by the given Prometheus version. \n In case of an argument conflict (e.g. an argument which is already set by the operator itself) or when providing an invalid argument, the reconciliation will fail and an error will be logged.", @@ -60078,7 +61140,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -60226,7 +61296,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -60247,7 +61325,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -60309,7 +61395,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -60330,7 +61424,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -60417,7 +61519,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -60453,7 +61563,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -60503,7 +61621,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -60592,7 +61711,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -60628,7 +61755,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -60697,7 +61832,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -60705,7 +61848,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -60912,7 +62063,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -60948,7 +62107,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -61117,7 +62284,8 @@ "type": "string", "enum": [ "monitoring.coreos.com" - ] + ], + "default": "monitoring.coreos.com" }, "name": { "description": "Name of the referent. When not set, all resources in the namespace are matched.", @@ -61319,7 +62487,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -61467,7 +62643,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -61488,7 +62672,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -61550,7 +62742,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -61571,7 +62771,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -61658,7 +62866,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -61694,7 +62910,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -61744,7 +62968,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -61833,7 +63058,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -61869,7 +63102,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -61938,7 +63179,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -61946,7 +63195,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -62153,7 +63410,15 @@ }, "port": { "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", @@ -62189,7 +63454,15 @@ }, "port": { "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -62499,7 +63772,8 @@ }, "portName": { "description": "Port name used for the pods and governing service. Default: \"web\"", - "type": "string" + "type": "string", + "default": "web" }, "priorityClassName": { "description": "Priority class assigned to the Pods.", @@ -63217,7 +64491,8 @@ "KeepEqual", "dropequal", "DropEqual" - ] + ], + "default": "replace" }, "modulus": { "description": "Modulus to take of the hash of the source label values. \n Only applicable when the action is `HashMod`.", @@ -63294,7 +64569,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -63302,7 +64585,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -63405,7 +64696,8 @@ "scrapeInterval": { "description": "Interval between consecutive scrapes. \n Default: \"30s\"", "type": "string", - "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" + "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", + "default": "30s" }, "scrapeTimeout": { "description": "Number of seconds to wait until a scrape request times out.", @@ -63653,7 +64945,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -63762,7 +65062,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -63770,7 +65078,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -63962,7 +65278,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -63970,7 +65294,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -64057,7 +65389,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "capacity": { @@ -64065,7 +65405,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "conditions": { @@ -64293,7 +65641,15 @@ "samplingFraction": { "description": "Sets the probability a given trace will be sampled. Must be a float from 0 through 1.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "timeout": { "description": "Maximum time the exporter will wait for each batch export.", @@ -64805,7 +66161,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -64830,7 +66194,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -64939,7 +66311,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -64947,7 +66327,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -65445,7 +66833,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -66009,8 +67405,8 @@ } }, "status": { - "description": "Most recent observed status of the Prometheus cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "type": "object", + "description": "Most recent observed status of the Prometheus cluster. Read-only. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "required": [ "availableReplicas", "paused", @@ -66142,6 +67538,14 @@ "format": "int32" } } + }, + "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" } }, "description": "PrometheusAgent defines a Prometheus agent deployment.", diff --git a/data/namecheap.json b/data/namecheap.json index 8f14942..1c959d6 100644 --- a/data/namecheap.json +++ b/data/namecheap.json @@ -6,13 +6,8 @@ "name": "com.namecheap.cloud.v1alpha1.ScheduledResource", "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": { "type": "object", @@ -39,6 +34,14 @@ "type": "string" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "type": "object", diff --git a/data/oracle.json b/data/oracle.json index 6c1bac8..2245205 100644 --- a/data/oracle.json +++ b/data/oracle.json @@ -6,17 +6,12 @@ "name": "com.oracle.mysql.v1.NdbCluster", "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": "The desired state of a MySQL NDB Cluster.", "type": "object", + "description": "The desired state of a MySQL NDB Cluster.", "properties": { "dataNode": { "description": "DataNode specifies the configuration of the data node running in MySQL Cluster.", @@ -29,7 +24,15 @@ "description": "Config is a map of default MySQL Cluster Data node configurations. \n More info : https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-params-ndbd.html", "type": "object", "additionalProperties": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "ndbPodSpec": { @@ -730,7 +733,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -738,7 +749,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -877,7 +896,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -885,7 +912,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -952,11 +987,13 @@ "freeAPISlots": { "description": "The number of extra API sections declared in the MySQL Cluster config, in addition to the API sections declared implicitly by the NDB Operator for the MySQL Servers. Any NDBAPI application can connect to the MySQL Cluster via these free slots.", "type": "integer", - "format": "int32" + "format": "int32", + "default": 2 }, "image": { "description": "The name of the MySQL Ndb Cluster image to be used. If not specified, \"container-registry.oracle.com/mysql/community-cluster:8.4.0\" will be used.", - "type": "string" + "type": "string", + "default": "container-registry.oracle.com/mysql/community-cluster:8.4.0" }, "imagePullPolicy": { "description": "ImagePullPolicy describes a policy for if/when to pull the MySQL Cluster container image", @@ -965,7 +1002,8 @@ "Always", "Never", "IfNotPresent" - ] + ], + "default": "IfNotPresent" }, "imagePullSecretName": { "description": "ImagePullSecretName optionally specifies the name of the secret that holds the credentials required for pulling the MySQL Cluster image.", @@ -979,12 +1017,21 @@ "description": "Config is a map of default MySQL Cluster Management node configurations. \n More info : https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-params-mgmd.html", "type": "object", "additionalProperties": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "enableLoadBalancer": { "description": "EnableLoadBalancer exposes the management servers externally using the kubernetes cloud provider's load balancer. By default, the operator creates a ClusterIP type service to expose the management server pods internally within the kubernetes cluster. If EnableLoadBalancer is set to true, a LoadBalancer type service will be created instead, exposing the management Servers outside the kubernetes cluster.", - "type": "boolean" + "type": "boolean", + "default": false }, "ndbPodSpec": { "description": "NdbPodSpec contains a subset of PodSpec fields which when set will be copied into to the podSpec of Management node's statefulset definition.", @@ -1684,7 +1731,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -1692,7 +1747,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1748,11 +1811,13 @@ "type": "integer", "format": "int32", "maximum": 63, - "minimum": 1 + "minimum": 1, + "default": 1 }, "enableLoadBalancer": { "description": "EnableLoadBalancer exposes the MySQL servers externally using the kubernetes cloud provider's load balancer. By default, the operator creates a ClusterIP type service to expose the MySQL server pods internally within the kubernetes cluster. If EnableLoadBalancer is set to true, a LoadBalancer type service will be created instead, exposing the MySQL servers outside the kubernetes cluster.", - "type": "boolean" + "type": "boolean", + "default": false }, "initScripts": { "description": "InitScripts is a map of configMap names from the same namespace and optionally an array of keys which store the SQL scripts to be executed during MySQL Server initialization. If key names are omitted, contents of all the keys will be treated as initialization SQL scripts. All scripts will be mounted into the MySQL pods and will be executed in the alphabetical order of configMap names and key names.", @@ -2471,7 +2536,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -2479,7 +2552,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2525,7 +2606,8 @@ "description": "NodeCount is the number of MySQL Servers to be started by the Operator", "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "pvcSpec": { "description": "PVCSpec is the PersistentVolumeClaimSpec to be used as the VolumeClaimTemplate of the mysql server statefulset. A PVC will be created for each mysql server by the statefulset controller and will be loaded into the mysql server pod and the container.", @@ -2617,7 +2699,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -2625,7 +2715,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2689,7 +2787,8 @@ }, "rootHost": { "description": "RootHost is the host or hosts from which the root user can connect to the MySQL Server. If unspecified, root user will be able to connect from any host that can access the MySQL Server.", - "type": "string" + "type": "string", + "default": "%" }, "rootPasswordSecretName": { "description": "The name of the Secret that holds the password to be set for the MySQL root accounts. The Secret should have a 'password' key that holds the password. If unspecified, a Secret will be created by the operator with a generated name of format \"-mysqld-root-password\"", @@ -2702,7 +2801,8 @@ "type": "integer", "format": "int32", "maximum": 4, - "minimum": 1 + "minimum": 1, + "default": 2 }, "tdeSecretName": { "description": "The name of the Secret that holds the encryption key or password required for Transparent Data Encryption (TDE) in MySQL Cluster. If a value is provided, the ndb operator will enable TDE and utilize the password stored in the Secret as the file system password for all data nodes within the MySQL Cluster. If no value is provided, TDE will not be enabled for MySQL Cluster.", @@ -2711,8 +2811,8 @@ } }, "status": { - "description": "The status of the NdbCluster resource and the MySQL Cluster managed by it.", "type": "object", + "description": "The status of the NdbCluster resource and the MySQL Cluster managed by it.", "properties": { "conditions": { "description": "Conditions represent the latest available observations of the MySQL Cluster's current state.", @@ -2771,6 +2871,14 @@ "type": "string" } } + }, + "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" } }, "description": "NdbCluster is the Schema for the Ndb CRD API", @@ -5827,13 +5935,14 @@ "name": "com.oracle.mysql.v2.InnoDBCluster", "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", + "properties": { + "name": { + "type": "string", + "maxLength": 40 + } + } }, "spec": { "type": "object", @@ -5848,7 +5957,203 @@ "required": [ "name" ], - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "properties": { + "dumpInstance": { + "type": "object", + "properties": { + "dumpOptions": { + "description": "A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "storage": { + "type": "object", + "properties": { + "azure": { + "type": "object", + "required": [ + "containerName", + "config" + ], + "properties": { + "config": { + "description": "Name of a Secret with Azure BLOB Storage configuration and credentials", + "type": "string" + }, + "containerName": { + "description": "Name of the Azure BLOB Storage container where the dump is stored", + "type": "string" + }, + "prefix": { + "description": "Path in the container where the dump files are stored", + "type": "string" + } + } + }, + "ociObjectStorage": { + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "Name of the OCI bucket where backup is stored", + "type": "string" + }, + "credentials": { + "description": "Name of a Secret with data for accessing the bucket", + "type": "string" + }, + "prefix": { + "description": "Path in bucket where backup is stored", + "type": "string" + } + } + }, + "persistentVolumeClaim": { + "description": "Specification of the PVC to be used. Used 'as is' in pod executing the backup.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "s3": { + "type": "object", + "required": [ + "bucketName", + "config" + ], + "properties": { + "bucketName": { + "description": "Name of the S3 bucket where the dump is stored", + "type": "string" + }, + "config": { + "description": "Name of a Secret with S3 configuration and credentials", + "type": "string" + }, + "endpoint": { + "description": "Override endpoint URL", + "type": "string" + }, + "prefix": { + "description": "Path in the bucket where the dump files are stored", + "type": "string" + }, + "profile": { + "description": "Profile being used in configuration files", + "type": "string", + "default": "" + } + } + } + }, + "x-kubernetes-preserve-unknown-fields": true + } + } + }, + "name": { + "description": "Embedded backup profile, referenced as backupProfileName elsewhere", + "type": "string" + }, + "podAnnotations": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "podLabels": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "snapshot": { + "type": "object", + "properties": { + "storage": { + "type": "object", + "properties": { + "azure": { + "type": "object", + "required": [ + "containerName", + "config" + ], + "properties": { + "config": { + "description": "Name of a Secret with Azure BLOB Storage configuration and credentials", + "type": "string" + }, + "containerName": { + "description": "Name of the Azure BLOB Storage container where the dump is stored", + "type": "string" + }, + "prefix": { + "description": "Path in the container where the dump files are stored", + "type": "string" + } + } + }, + "ociObjectStorage": { + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "Bucket name where backup is stored", + "type": "string" + }, + "credentials": { + "description": "Name of a Secret with data for accessing the bucket", + "type": "string" + }, + "prefix": { + "description": "Path in bucket where backup is stored", + "type": "string" + } + } + }, + "persistentVolumeClaim": { + "description": "Specification of the PVC to be used. Used 'as is' in pod executing the backup.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "s3": { + "type": "object", + "required": [ + "bucketName", + "config" + ], + "properties": { + "bucketName": { + "description": "Name of the S3 bucket where the dump is stored", + "type": "string" + }, + "config": { + "description": "Name of a Secret with S3 configuration and credentials", + "type": "string" + }, + "endpoint": { + "description": "Override endpoint URL", + "type": "string" + }, + "prefix": { + "description": "Path in the bucket where the dump files are stored", + "type": "string" + }, + "profile": { + "description": "Profile being used in configuration files", + "type": "string", + "default": "" + } + } + } + }, + "x-kubernetes-preserve-unknown-fields": true + } + } + } + } } }, "backupSchedules": { @@ -5859,51 +6164,327 @@ "name", "schedule" ], - "x-kubernetes-preserve-unknown-fields": true - } - }, - "baseServerId": { - "description": "Base value for MySQL server_id for instances in the cluster", - "type": "integer", - "maximum": 4294967195, - "minimum": 0 - }, - "datadirVolumeClaimTemplate": { - "description": "Template for a PersistentVolumeClaim, to be used as datadir", - "x-kubernetes-preserve-unknown-fields": true - }, - "edition": { - "description": "MySQL Server Edition (community or enterprise)", - "type": "string", - "pattern": "^(community|enterprise)$" - }, - "imagePullPolicy": { - "description": "Defaults to Always, but set to IfNotPresent in deploy-operator.yaml when deploying Operator", - "type": "string" - }, - "imagePullSecrets": { - "type": "array", - "items": { + "x-kubernetes-preserve-unknown-fields": true, "type": "object", "properties": { - "name": { - "type": "string" - } - } - } - }, + "backupProfile": { + "description": "backupProfile specification if backupProfileName is not specified", + "type": "object", + "properties": { + "dumpInstance": { + "type": "object", + "properties": { + "dumpOptions": { + "description": "A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "storage": { + "type": "object", + "properties": { + "azure": { + "type": "object", + "required": [ + "containerName", + "config" + ], + "properties": { + "config": { + "description": "Name of a Secret with Azure BLOB Storage configuration and credentials", + "type": "string" + }, + "containerName": { + "description": "Name of the Azure BLOB Storage container where the dump is stored", + "type": "string" + }, + "prefix": { + "description": "Path in the container where the dump files are stored", + "type": "string" + } + } + }, + "ociObjectStorage": { + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "Name of the OCI Bucket where backup is stored", + "type": "string" + }, + "credentials": { + "description": "Name of a Secret with data for accessing the bucket", + "type": "string" + }, + "prefix": { + "description": "Path in bucket where backup is stored", + "type": "string" + } + } + }, + "persistentVolumeClaim": { + "description": "Specification of the PVC to be used. Used 'as is' in pod executing the backup.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "s3": { + "type": "object", + "required": [ + "bucketName", + "config" + ], + "properties": { + "bucketName": { + "description": "Name of the S3 bucket where the dump is stored", + "type": "string" + }, + "config": { + "description": "Name of a Secret with S3 configuration and credentials", + "type": "string" + }, + "endpoint": { + "description": "Override endpoint URL", + "type": "string" + }, + "prefix": { + "description": "Path in the bucket where the dump files are stored", + "type": "string" + }, + "profile": { + "description": "Profile being used in configuration files", + "type": "string", + "default": "" + } + } + } + }, + "x-kubernetes-preserve-unknown-fields": true + } + } + }, + "podAnnotations": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "podLabels": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "x-kubernetes-preserve-unknown-fields": true + }, + "backupProfileName": { + "description": "Name of the backupProfile to be used", + "type": "string" + }, + "deleteBackupData": { + "description": "Whether to delete the backup data in case the MySQLBackup object created by the job is deleted", + "type": "boolean", + "default": false + }, + "enabled": { + "description": "Whether the schedule is enabled or not", + "type": "boolean", + "default": true + }, + "name": { + "description": "Name of the backup schedule", + "type": "string" + }, + "schedule": { + "description": "The schedule of the job, syntax as a cron expression", + "type": "string" + } + } + } + }, + "baseServerId": { + "description": "Base value for MySQL server_id for instances in the cluster", + "type": "integer", + "maximum": 4294967195, + "minimum": 0, + "default": 1000 + }, + "datadirVolumeClaimTemplate": { + "description": "Template for a PersistentVolumeClaim, to be used as datadir", + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" + }, + "edition": { + "description": "MySQL Server Edition (community or enterprise)", + "type": "string", + "pattern": "^(community|enterprise)$" + }, + "imagePullPolicy": { + "description": "Defaults to Always, but set to IfNotPresent in deploy-operator.yaml when deploying Operator", + "type": "string" + }, + "imagePullSecrets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + }, "imageRepository": { "description": "Repository where images are pulled from; defaults to container-registry.oracle.com/mysql", "type": "string" }, "initDB": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "properties": { + "clone": { + "type": "object", + "required": [ + "donorUrl", + "secretKeyRef" + ], + "properties": { + "donorUrl": { + "description": "URL of the cluster to clone from", + "type": "string" + }, + "rootUser": { + "description": "User name used for cloning", + "type": "string", + "default": "root" + }, + "secretKeyRef": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Secret name with key 'rootPassword' storing the password for the user specified in rootUser", + "type": "string" + } + } + } + } + }, + "dump": { + "type": "object", + "required": [ + "storage" + ], + "properties": { + "name": { + "description": "Name of the dump. Not used by the operator, but a descriptive hint for the cluster administrator", + "type": "string" + }, + "options": { + "description": "A dictionary of key-value pairs passed directly to MySQL Shell's loadDump()", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "path": { + "description": "Path to the dump in the PVC. Use when specifying persistentVolumeClaim. Omit for ociObjectStorage, S3, or azure.", + "type": "string" + }, + "storage": { + "type": "object", + "properties": { + "azure": { + "type": "object", + "required": [ + "containerName", + "prefix", + "config" + ], + "properties": { + "config": { + "description": "Name of a Secret with Azure BLOB Storage configuration and credentials", + "type": "string" + }, + "containerName": { + "description": "Name of the Azure BLOB Storage container where the dump is stored", + "type": "string" + }, + "prefix": { + "description": "Path in the container where the dump files are stored", + "type": "string" + } + } + }, + "ociObjectStorage": { + "type": "object", + "required": [ + "bucketName", + "prefix", + "credentials" + ], + "properties": { + "bucketName": { + "description": "Name of the OCI bucket where the dump is stored", + "type": "string" + }, + "credentials": { + "description": "Name of a Secret with data for accessing the bucket", + "type": "string" + }, + "prefix": { + "description": "Path in the bucket where the dump files are stored", + "type": "string" + } + } + }, + "persistentVolumeClaim": { + "description": "Specification of the PVC to be used. Used 'as is' in the cloning pod.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "s3": { + "type": "object", + "required": [ + "bucketName", + "prefix", + "config" + ], + "properties": { + "bucketName": { + "description": "Name of the S3 bucket where the dump is stored", + "type": "string" + }, + "config": { + "description": "Name of a Secret with S3 configuration and credentials", + "type": "string" + }, + "endpoint": { + "description": "Override endpoint URL", + "type": "string" + }, + "prefix": { + "description": "Path in the bucket where the dump files are stored", + "type": "string" + }, + "profile": { + "description": "Profile being used in configuration files", + "type": "string", + "default": "" + } + } + } + }, + "x-kubernetes-preserve-unknown-fields": true + } + } + } + } }, "instances": { "description": "Number of MySQL replica instances for the cluster", "type": "integer", "maximum": 9, - "minimum": 1 + "minimum": 1, + "default": 1 }, "keyring": { "description": "Keyring specification", @@ -5928,11 +6509,13 @@ }, "readOnly": { "description": "Whether to open the keyring file in read-only mode", - "type": "boolean" + "type": "boolean", + "default": false }, "storage": { "description": "Specification of the volume to be mounted where the keyring file resides", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" } } }, @@ -5950,11 +6533,13 @@ }, "readOnly": { "description": "Whether to open the keyring file in read-only mode", - "type": "boolean" + "type": "boolean", + "default": false }, "storage": { "description": "Specification of the volume to be mounted where the keyring file resides", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" } } }, @@ -6039,13 +6624,15 @@ "properties": { "containerName": { "description": "Name of the collector container sidecar", - "type": "string" + "type": "string", + "default": "logcollector" }, "env": { "type": "array", "items": { "description": "Environment variables to be passed to the image. Definition will be directly copied like podSpec fields are", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" } }, "fluentd": { @@ -6061,11 +6648,13 @@ "properties": { "options": { "description": "fluentd specific options for the error log", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "tag": { "description": "Tag for the error log records", - "type": "string" + "type": "string", + "default": "" } } }, @@ -6074,11 +6663,13 @@ "properties": { "options": { "description": "fluentd specific options for the general log", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "tag": { "description": "Tag for the general log records", - "type": "string" + "type": "string", + "default": "" } } }, @@ -6107,7 +6698,8 @@ }, "enabled": { "description": "Whether to enable record augmentation with additional data", - "type": "boolean" + "type": "boolean", + "default": false }, "labels": { "type": "array", @@ -6202,7 +6794,18 @@ "name", "rawConfig" ], - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "properties": { + "name": { + "description": "Name of the sink. Used only for documentation purposes", + "type": "string" + }, + "rawConfig": { + "description": "Raw configuration of the sink", + "type": "string" + } + } } }, "slowQueryLog": { @@ -6210,34 +6813,53 @@ "properties": { "options": { "description": "fluentd specific options for the slow log", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "tag": { "description": "Tag for the slow log records", - "type": "string" + "type": "string", + "default": "" } } } - } + }, + "oneOf": [ + { + "required": [ + "sinks" + ] + } + ] }, "image": { "description": "Name of an image, including registry and repository, to be used for the log collector sidecar. If provided it needs to be an image for the configured collector type.", "type": "string" } - } + }, + "oneOf": [ + { + "required": [ + "image", + "fluentd" + ] + } + ] }, "error": { "type": "object", "properties": { "collect": { "description": "Whether error logging data should be collected. Implies that the logging should be enabled. If enabled the error log will be switched to JSON format output", - "type": "boolean" + "type": "boolean", + "default": false }, "verbosity": { "description": "Log error verbosity. For details, see the MySQL Server --log-error-verbosity documentation.", "type": "integer", "maximum": 3, - "minimum": 1 + "minimum": 1, + "default": 3 } } }, @@ -6246,11 +6868,13 @@ "properties": { "collect": { "description": "Whether general logging data should be collected. Implies that the logging should be enabled.", - "type": "boolean" + "type": "boolean", + "default": false }, "enabled": { "description": "Whether general logging should be enabled", - "type": "boolean" + "type": "boolean", + "default": false } } }, @@ -6259,16 +6883,19 @@ "properties": { "collect": { "description": "Whether slow query logging data should be collected. Implies that the logging should be enabled.", - "type": "boolean" + "type": "boolean", + "default": false }, "enabled": { "description": "Whether slow query logging should be enabled", - "type": "boolean" + "type": "boolean", + "default": false }, "longQueryTime": { "description": "Long query time threshold", "type": "number", - "minimum": 0 + "minimum": 0, + "default": 10 } } } @@ -6284,7 +6911,8 @@ "properties": { "enable": { "description": "Toggle to enable or disable the metrics sidecar", - "type": "boolean" + "type": "boolean", + "default": false }, "image": { "description": "Name of an image to be used for the metrics sidecar, if provided metrics will be enabled", @@ -6292,11 +6920,14 @@ }, "monitor": { "description": "Create a ServiceMonitor for Prometheus Operator", - "type": "boolean" + "type": "boolean", + "default": false }, "monitorSpec": { "description": "Custom configuration for the ServiceMonitor object", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "default": {} }, "options": { "description": "Options passed to the metrics provider as command line arguments", @@ -6320,13 +6951,16 @@ "type": "string" }, "podAnnotations": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "podLabels": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "podSpec": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "readReplicas": { "type": "array", @@ -6341,17 +6975,20 @@ "description": "Base value for MySQL server_id for instances of the readReplica, if 0 it will be assigned automatically", "type": "integer", "maximum": 4294967195, - "minimum": 0 + "minimum": 0, + "default": 0 }, "datadirVolumeClaimTemplate": { "description": "Template for a PersistentVolumeClaim, to be used as datadir", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "instances": { "description": "Number of MySQL instances for the set of read replica", "type": "integer", "maximum": 999, - "minimum": 1 + "minimum": 1, + "default": 1 }, "mycnf": { "description": "Custom configuration additions for my.cnf", @@ -6361,13 +6998,16 @@ "type": "string" }, "podAnnotations": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "podLabels": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "podSpec": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "version": { "description": "MySQL Server version", @@ -6391,7 +7031,8 @@ "instances": { "description": "Number of MySQL Router instances to deploy", "type": "integer", - "minimum": 0 + "minimum": 0, + "default": 1 }, "options": { "description": "Command line options passed to MySQL Router while running", @@ -6401,13 +7042,16 @@ } }, "podAnnotations": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "podLabels": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "podSpec": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "routingOptions": { "description": "Set routing options for the cluster", @@ -6430,7 +7074,8 @@ }, "stats_updates_frequency": { "type": "integer", - "minimum": 0 + "minimum": 0, + "default": 0 } } }, @@ -6455,7 +7100,8 @@ "properties": { "annotations": { "description": "Custom annotations for the Service", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "defaultPort": { "description": "Target for the Service's default (3306) port. If mysql-rw traffic will go to the primary and allow read and write operations, with mysql-ro traffic goes to the replica and allows only read operations, with mysql-rw-split the router's read-write-splitting will be targeted", @@ -6464,11 +7110,13 @@ "mysql-rw", "mysql-ro", "mysql-rw-split" - ] + ], + "default": "mysql-rw" }, "labels": { "description": "Custom labels for the Service", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "type": { "type": "string", @@ -6476,7 +7124,8 @@ "ClusterIP", "NodePort", "LoadBalancer" - ] + ], + "default": "ClusterIP" } } }, @@ -6493,7 +7142,8 @@ }, "tlsUseSelfSigned": { "description": "Enables use of self-signed TLS certificates, reducing or disabling TLS based security verifications", - "type": "boolean" + "type": "boolean", + "default": false }, "version": { "description": "MySQL Server version", @@ -6503,7 +7153,16 @@ } }, "status": { + "type": "object", "x-kubernetes-preserve-unknown-fields": true + }, + "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" } }, "type": "object", @@ -7885,14 +8544,6 @@ "name": "com.oracle.mysql.v2.MySQLBackup", "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" - }, "spec": { "type": "object", "required": [ @@ -7900,11 +8551,116 @@ ], "properties": { "addTimestampToBackupDirectory": { - "type": "boolean" + "type": "boolean", + "default": true }, "backupProfile": { "description": "backupProfile specification if backupProfileName is not specified", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "properties": { + "dumpInstance": { + "type": "object", + "properties": { + "dumpOptions": { + "description": "A dictionary of key-value pairs passed directly to MySQL Shell's DumpInstance()", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "storage": { + "type": "object", + "properties": { + "azure": { + "type": "object", + "required": [ + "containerName", + "config" + ], + "properties": { + "config": { + "description": "Name of a Secret with Azure BLOB Storage configuration and credentials", + "type": "string" + }, + "containerName": { + "description": "Name of the Azure BLOB Storage container where the dump is stored", + "type": "string" + }, + "prefix": { + "description": "Path in the container where the dump files are stored", + "type": "string" + } + } + }, + "ociObjectStorage": { + "type": "object", + "required": [ + "bucketName", + "credentials" + ], + "properties": { + "bucketName": { + "description": "Name of the OCI bucket where backup is stored", + "type": "string" + }, + "credentials": { + "description": "Name of a Secret with data for accessing the bucket", + "type": "string" + }, + "prefix": { + "description": "Path in bucket where backup is stored", + "type": "string" + } + } + }, + "persistentVolumeClaim": { + "description": "Specification of the PVC to be used. Used 'as is' in pod executing the backup.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "s3": { + "type": "object", + "required": [ + "bucketName", + "config" + ], + "properties": { + "bucketName": { + "description": "Name of the S3 bucket where the dump is stored", + "type": "string" + }, + "config": { + "description": "Name of a Secret with S3 configuration and credentials", + "type": "string" + }, + "endpoint": { + "description": "Override endpoint URL", + "type": "string" + }, + "prefix": { + "description": "Path in the bucket where the dump files are stored", + "type": "string" + }, + "profile": { + "description": "Profile being used in configuration files", + "type": "string", + "default": "" + } + } + } + }, + "x-kubernetes-preserve-unknown-fields": true + } + } + }, + "podAnnotations": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "podLabels": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + } }, "backupProfileName": { "type": "string" @@ -7913,7 +8669,8 @@ "type": "string" }, "deleteBackupData": { - "type": "boolean" + "type": "boolean", + "default": false } } }, @@ -7960,6 +8717,14 @@ "type": "string" } } + }, + "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" } }, "type": "object", diff --git a/data/projectcalico.json b/data/projectcalico.json index 5b22a97..84a9c04 100644 --- a/data/projectcalico.json +++ b/data/projectcalico.json @@ -6,17 +6,12 @@ "name": "org.projectcalico.crd.v1.BGPConfiguration", "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": "BGPConfigurationSpec contains the values of the BGP configuration.", "type": "object", + "description": "BGPConfigurationSpec contains the values of the BGP configuration.", "properties": { "asNumber": { "description": "ASNumber is the default AS number used by a node. [Default: 64512]", @@ -159,6 +154,14 @@ } } } + }, + "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" } }, "description": "BGPConfiguration contains the configuration for any BGP routing.", @@ -397,17 +400,12 @@ "name": "org.projectcalico.crd.v1.BGPFilter", "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": "BGPFilterSpec contains the IPv4 and IPv6 filter rules of the BGP Filter.", "type": "object", + "description": "BGPFilterSpec contains the IPv4 and IPv6 filter rules of the BGP Filter.", "properties": { "exportV4": { "description": "The ordered set of IPv4 BGPFilter rules acting on exporting routes to a peer.", @@ -506,6 +504,14 @@ } } } + }, + "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" } }, "type": "object", @@ -698,17 +704,12 @@ "name": "org.projectcalico.crd.v1.BGPPeer", "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": "BGPPeerSpec contains the specification for a BGPPeer resource.", "type": "object", + "description": "BGPPeerSpec contains the specification for a BGPPeer resource.", "properties": { "asNumber": { "description": "The AS Number of the peer.", @@ -791,6 +792,14 @@ "type": "integer" } } + }, + "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" } }, "type": "object", @@ -967,17 +976,12 @@ "name": "org.projectcalico.crd.v1.BlockAffinity", "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": "BlockAffinitySpec contains the specification for a BlockAffinity resource.", "type": "object", + "description": "BlockAffinitySpec contains the specification for a BlockAffinity resource.", "required": [ "cidr", "deleted", @@ -999,6 +1003,14 @@ "type": "string" } } + }, + "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" } }, "type": "object", @@ -1114,17 +1126,12 @@ "name": "org.projectcalico.crd.v1.CalicoNodeStatus", "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": "CalicoNodeStatusSpec contains the specification for a CalicoNodeStatus resource.", "type": "object", + "description": "CalicoNodeStatusSpec contains the specification for a CalicoNodeStatus resource.", "properties": { "classes": { "description": "Classes declares the types of information to monitor for this calico/node, and allows for selective status reporting about certain subsets of information.", @@ -1144,6 +1151,14 @@ } } }, + "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" + }, "status": { "description": "CalicoNodeStatusStatus defines the observed state of CalicoNodeStatus. No validation needed for status since it is updated by Calico.", "type": "object", @@ -1288,7 +1303,9 @@ }, "lastUpdated": { "description": "LastUpdated is a timestamp representing the server time when CalicoNodeStatus object last updated. It is represented in RFC3339 form and is in UTC.", - "format": "date-time" + "format": "date-time", + "type": "string", + "nullable": true }, "routes": { "description": "Routes reports routes known to the Calico BGP daemon on the node.", @@ -1727,17 +1744,12 @@ "name": "org.projectcalico.crd.v1.ClusterInformation", "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": "ClusterInformationSpec contains the values of describing the cluster.", "type": "object", + "description": "ClusterInformationSpec contains the values of describing the cluster.", "properties": { "calicoVersion": { "description": "CalicoVersion is the version of Calico that the cluster is running", @@ -1760,6 +1772,14 @@ "type": "string" } } + }, + "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" } }, "description": "ClusterInformation contains the cluster specific information.", @@ -1878,17 +1898,12 @@ "name": "org.projectcalico.crd.v1.FelixConfiguration", "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": "FelixConfigurationSpec contains the values of the Felix configuration.", "type": "object", + "description": "FelixConfigurationSpec contains the values of the Felix configuration.", "properties": { "allowIPIPPacketsFromWorkloads": { "description": "AllowIPIPPacketsFromWorkloads controls whether Felix will add a rule to drop IPIP encapsulated traffic from workloads [Default: false]", @@ -1996,7 +2011,15 @@ "bpfPSNATPorts": { "description": "BPFPSNATPorts sets the range from which we randomly pick a port if there is a source port collision. This should be within the ephemeral range as defined by RFC 6056 (1024–65535) and preferably outside the ephemeral ranges used by common operating systems. Linux uses 32768–60999, while others mostly use the IANA defined range 49152–65535. It is not necessarily a problem if this range overlaps with the operating systems. Both ends of the range are inclusive. [Default: 20000:29999]", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "bpfPolicyDebugEnabled": { "description": "BPFPolicyDebugEnabled when true, Felix records detailed information about the BPF policy programs, which can be examined with the calico-bpf command-line tool.", @@ -2227,7 +2250,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "logDebugFilenameRegex": { @@ -2276,7 +2307,15 @@ "natPortRange": { "description": "NATPortRange specifies the range of ports that is used for port mapping when doing outgoing NAT. When unset the default behavior of the network stack is used.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "netlinkTimeout": { "type": "string" @@ -2471,6 +2510,14 @@ "type": "string" } } + }, + "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" } }, "description": "Felix Configuration contains the configuration for Felix.", @@ -3173,13 +3220,8 @@ "name": "org.projectcalico.crd.v1.GlobalNetworkPolicy", "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": { "type": "object", @@ -3232,7 +3274,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "notSelector": { @@ -3244,7 +3294,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "selector": { @@ -3361,12 +3419,28 @@ "notProtocol": { "description": "NotProtocol is the negated version of the Protocol field.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "protocol": { "description": "Protocol is an optional field that restricts the rule to only apply to traffic of a specific IP protocol. Required if any of the EntityRules contain Ports (because ports only apply to certain protocols). \n Must be one of these string values: \"TCP\", \"UDP\", \"ICMP\", \"ICMPv6\", \"SCTP\", \"UDPLite\" or an integer in the range 1-255.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "source": { "description": "Source contains the match criteria that apply to source entity.", @@ -3395,7 +3469,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "notSelector": { @@ -3407,7 +3489,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "selector": { @@ -3490,7 +3580,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "notSelector": { @@ -3502,7 +3600,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "selector": { @@ -3619,12 +3725,28 @@ "notProtocol": { "description": "NotProtocol is the negated version of the Protocol field.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "protocol": { "description": "Protocol is an optional field that restricts the rule to only apply to traffic of a specific IP protocol. Required if any of the EntityRules contain Ports (because ports only apply to certain protocols). \n Must be one of these string values: \"TCP\", \"UDP\", \"ICMP\", \"ICMPv6\", \"SCTP\", \"UDPLite\" or an integer in the range 1-255.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "source": { "description": "Source contains the match criteria that apply to source entity.", @@ -3653,7 +3775,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "notSelector": { @@ -3665,7 +3795,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "selector": { @@ -3737,6 +3875,14 @@ } } } + }, + "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" } }, "type": "object", @@ -4480,17 +4626,12 @@ "name": "org.projectcalico.crd.v1.GlobalNetworkSet", "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": "GlobalNetworkSetSpec contains the specification for a NetworkSet resource.", "type": "object", + "description": "GlobalNetworkSetSpec contains the specification for a NetworkSet resource.", "properties": { "nets": { "description": "The list of IP networks that belong to this set.", @@ -4500,6 +4641,14 @@ } } } + }, + "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" } }, "description": "GlobalNetworkSet contains a set of arbitrary IP sub-networks/CIDRs that share labels to allow rules to refer to them via selectors. The labels of GlobalNetworkSet are not namespaced.", @@ -4605,17 +4754,12 @@ "name": "org.projectcalico.crd.v1.HostEndpoint", "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": "HostEndpointSpec contains the specification for a HostEndpoint resource.", "type": "object", + "description": "HostEndpointSpec contains the specification for a HostEndpoint resource.", "properties": { "expectedIPs": { "description": "The expected IP addresses (IPv4 and IPv6) of the endpoint. If \"InterfaceName\" is not present, Calico will look for an interface matching any of the IPs in the list and apply policy to that. Note: \tWhen using the selector match criteria in an ingress or egress security Policy \tor Profile, Calico converts the selector into a set of IP addresses. For host \tendpoints, the ExpectedIPs field is used for that purpose. (If only the interface \tname is specified, Calico does not learn the IPs of the interface for use in match \tcriteria.)", @@ -4651,7 +4795,15 @@ }, "protocol": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4664,6 +4816,14 @@ } } } + }, + "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" } }, "type": "object", @@ -4814,17 +4974,12 @@ "name": "org.projectcalico.crd.v1.IPAMBlock", "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": "IPAMBlockSpec contains the specification for an IPAMBlock resource.", "type": "object", + "description": "IPAMBlockSpec contains the specification for an IPAMBlock resource.", "required": [ "allocations", "attributes", @@ -4840,7 +4995,10 @@ "allocations": { "description": "Array of allocations in-use within this block. nil entries mean the allocation is free. For non-nil entries at index i, the index is the ordinal of the allocation within this block and the value is the index of the associated attributes in the Attributes array.", "type": "array", - "items": {} + "items": { + "type": "integer", + "nullable": true + } }, "attributes": { "description": "Attributes is an array of arbitrary metadata associated with allocations in the block. To find attributes for a given allocation, use the value of the allocation's entry in the Allocations array as the index of the element in this array.", @@ -4871,7 +5029,8 @@ "sequenceNumber": { "description": "We store a sequence number that is updated each time the block is written. Each allocation will also store the sequence number of the block at the time of its creation. When releasing an IP, passing the sequence number associated with the allocation allows us to protect against a race condition and ensure the IP hasn't been released and re-allocated since the release request.", "type": "integer", - "format": "int64" + "format": "int64", + "default": 0 }, "sequenceNumberForAllocation": { "description": "Map of allocated ordinal within the block to sequence number of the block at the time of allocation. Kubernetes does not allow numerical keys for maps, so the key is cast to a string.", @@ -4893,6 +5052,14 @@ } } } + }, + "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" } }, "type": "object", @@ -5059,17 +5226,12 @@ "name": "org.projectcalico.crd.v1.IPAMConfig", "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": "IPAMConfigSpec contains the specification for an IPAMConfig resource.", "type": "object", + "description": "IPAMConfigSpec contains the specification for an IPAMConfig resource.", "required": [ "autoAllocateBlocks", "strictAffinity" @@ -5088,6 +5250,14 @@ "type": "boolean" } } + }, + "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" } }, "type": "object", @@ -5200,17 +5370,12 @@ "name": "org.projectcalico.crd.v1.IPAMHandle", "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": "IPAMHandleSpec contains the specification for an IPAMHandle resource.", "type": "object", + "description": "IPAMHandleSpec contains the specification for an IPAMHandle resource.", "required": [ "block", "handleID" @@ -5229,6 +5394,14 @@ "type": "string" } } + }, + "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" } }, "type": "object", @@ -5341,17 +5514,12 @@ "name": "org.projectcalico.crd.v1.IPPool", "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": "IPPoolSpec contains the specification for an IPPool resource.", "type": "object", + "description": "IPPoolSpec contains the specification for an IPPool resource.", "required": [ "cidr" ], @@ -5414,6 +5582,14 @@ "type": "string" } } + }, + "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" } }, "type": "object", @@ -5570,17 +5746,12 @@ "name": "org.projectcalico.crd.v1.IPReservation", "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": "IPReservationSpec contains the specification for an IPReservation resource.", "type": "object", + "description": "IPReservationSpec contains the specification for an IPReservation resource.", "properties": { "reservedCIDRs": { "description": "ReservedCIDRs is a list of CIDRs and/or IP addresses that Calico IPAM will exclude from new allocations.", @@ -5590,6 +5761,14 @@ } } } + }, + "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" } }, "type": "object", @@ -5693,17 +5872,12 @@ "name": "org.projectcalico.crd.v1.KubeControllersConfiguration", "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": "KubeControllersConfigurationSpec contains the values of the Kubernetes controllers configuration.", "type": "object", + "description": "KubeControllersConfigurationSpec contains the values of the Kubernetes controllers configuration.", "required": [ "controllers" ], @@ -5805,6 +5979,14 @@ } } }, + "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" + }, "status": { "description": "KubeControllersConfigurationStatus represents the status of the configuration. It's useful for admins to be able to see the actual config that was applied, which can be modified by environment variables on the kube-controllers process.", "type": "object", @@ -6234,13 +6416,8 @@ "name": "org.projectcalico.crd.v1.NetworkPolicy", "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": { "type": "object", @@ -6285,7 +6462,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "notSelector": { @@ -6297,7 +6482,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "selector": { @@ -6414,12 +6607,28 @@ "notProtocol": { "description": "NotProtocol is the negated version of the Protocol field.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "protocol": { "description": "Protocol is an optional field that restricts the rule to only apply to traffic of a specific IP protocol. Required if any of the EntityRules contain Ports (because ports only apply to certain protocols). \n Must be one of these string values: \"TCP\", \"UDP\", \"ICMP\", \"ICMPv6\", \"SCTP\", \"UDPLite\" or an integer in the range 1-255.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "source": { "description": "Source contains the match criteria that apply to source entity.", @@ -6448,7 +6657,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "notSelector": { @@ -6460,7 +6677,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "selector": { @@ -6543,7 +6768,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "notSelector": { @@ -6555,7 +6788,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "selector": { @@ -6672,12 +6913,28 @@ "notProtocol": { "description": "NotProtocol is the negated version of the Protocol field.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "protocol": { "description": "Protocol is an optional field that restricts the rule to only apply to traffic of a specific IP protocol. Required if any of the EntityRules contain Ports (because ports only apply to certain protocols). \n Must be one of these string values: \"TCP\", \"UDP\", \"ICMP\", \"ICMPv6\", \"SCTP\", \"UDPLite\" or an integer in the range 1-255.", "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "source": { "description": "Source contains the match criteria that apply to source entity.", @@ -6706,7 +6963,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "notSelector": { @@ -6718,7 +6983,15 @@ "type": "array", "items": { "pattern": "^.*", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "selector": { @@ -6782,6 +7055,14 @@ } } } + }, + "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" } }, "type": "object", @@ -7509,17 +7790,12 @@ "name": "org.projectcalico.crd.v1.NetworkSet", "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": "NetworkSetSpec contains the specification for a NetworkSet resource.", "type": "object", + "description": "NetworkSetSpec contains the specification for a NetworkSet resource.", "properties": { "nets": { "description": "The list of IP networks that belong to this set.", @@ -7529,6 +7805,14 @@ } } } + }, + "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" } }, "description": "NetworkSet is the Namespaced-equivalent of the GlobalNetworkSet.", diff --git a/data/rabbitmq.json b/data/rabbitmq.json index 89f960d..414364b 100644 --- a/data/rabbitmq.json +++ b/data/rabbitmq.json @@ -6,17 +6,12 @@ "name": "com.rabbitmq.v1alpha1.SuperStream", "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": "SuperStreamSpec defines the desired state of SuperStream", "type": "object", + "description": "SuperStreamSpec defines the desired state of SuperStream", "required": [ "name", "rabbitmqClusterReference" @@ -28,7 +23,8 @@ }, "partitions": { "description": "Number of partitions to create within this super stream.\nDefaults to '3'.", - "type": "integer" + "type": "integer", + "default": 3 }, "rabbitmqClusterReference": { "description": "Reference to the RabbitmqCluster that the SuperStream will be created in.\nRequired property.", @@ -64,13 +60,14 @@ }, "vhost": { "description": "Default to vhost '/'; cannot be updated", - "type": "string" + "type": "string", + "default": "/" } } }, "status": { - "description": "SuperStreamStatus defines the observed state of SuperStream", "type": "object", + "description": "SuperStreamStatus defines the observed state of SuperStream", "properties": { "conditions": { "type": "array", @@ -118,6 +115,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "SuperStream is the Schema for the queues API", @@ -328,24 +333,20 @@ "name": "com.rabbitmq.v1beta1.Binding", "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": "BindingSpec defines the desired state of Binding", "type": "object", + "description": "BindingSpec defines the desired state of Binding", "required": [ "rabbitmqClusterReference" ], "properties": { "arguments": { "description": "Cannot be updated", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "destination": { "description": "Cannot be updated", @@ -394,13 +395,14 @@ }, "vhost": { "description": "Default to vhost '/'; cannot be updated", - "type": "string" + "type": "string", + "default": "/" } } }, "status": { - "description": "BindingStatus defines the observed state of Binding", "type": "object", + "description": "BindingStatus defines the observed state of Binding", "properties": { "conditions": { "type": "array", @@ -441,6 +443,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Binding is the Schema for the bindings API", @@ -652,24 +662,20 @@ "name": "com.rabbitmq.v1beta1.Exchange", "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": "ExchangeSpec defines the desired state of Exchange", "type": "object", + "description": "ExchangeSpec defines the desired state of Exchange", "required": [ "name", "rabbitmqClusterReference" ], "properties": { "arguments": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "autoDelete": { "description": "Cannot be updated", @@ -710,17 +716,19 @@ }, "type": { "description": "Cannot be updated", - "type": "string" + "type": "string", + "default": "direct" }, "vhost": { "description": "Default to vhost '/'; cannot be updated", - "type": "string" + "type": "string", + "default": "/" } } }, "status": { - "description": "ExchangeStatus defines the observed state of Exchange", "type": "object", + "description": "ExchangeStatus defines the observed state of Exchange", "properties": { "conditions": { "type": "array", @@ -761,6 +769,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Exchange is the Schema for the exchanges API", @@ -969,17 +985,12 @@ "name": "com.rabbitmq.v1beta1.Federation", "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": "FederationSpec defines the desired state of Federation\nFor how to configure federation upstreams, see: https://www.rabbitmq.com/federation-reference.html.", "type": "object", + "description": "FederationSpec defines the desired state of Federation\nFor how to configure federation upstreams, see: https://www.rabbitmq.com/federation-reference.html.", "required": [ "name", "rabbitmqClusterReference", @@ -1060,13 +1071,14 @@ }, "vhost": { "description": "Default to vhost '/'; cannot be updated", - "type": "string" + "type": "string", + "default": "/" } } }, "status": { - "description": "FederationStatus defines the observed state of Federation", "type": "object", + "description": "FederationStatus defines the observed state of Federation", "properties": { "conditions": { "type": "array", @@ -1107,6 +1119,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Federation is the Schema for the federations API", @@ -1342,17 +1362,12 @@ "name": "com.rabbitmq.v1beta1.OperatorPolicy", "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": "OperatorPolicySpec defines the desired state of OperatorPolicy\nhttps://www.rabbitmq.com/parameters.html#operator-policies", "type": "object", + "description": "OperatorPolicySpec defines the desired state of OperatorPolicy\nhttps://www.rabbitmq.com/parameters.html#operator-policies", "required": [ "definition", "name", @@ -1368,11 +1383,13 @@ "classic_queues", "quorum_queues", "streams" - ] + ], + "default": "queues" }, "definition": { "description": "OperatorPolicy definition. Required property.", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "name": { "description": "Required property; cannot be updated", @@ -1384,7 +1401,8 @@ }, "priority": { "description": "Default to '0'.\nIn the event that more than one operator policy can match a given queue, the operator policy with the greatest priority applies.", - "type": "integer" + "type": "integer", + "default": 0 }, "rabbitmqClusterReference": { "description": "Reference to the RabbitmqCluster that the operator policy will be created in.\nRequired property.", @@ -1413,13 +1431,14 @@ }, "vhost": { "description": "Default to vhost '/'; cannot be updated", - "type": "string" + "type": "string", + "default": "/" } } }, "status": { - "description": "OperatorPolicyStatus defines the observed state of OperatorPolicy", "type": "object", + "description": "OperatorPolicyStatus defines the observed state of OperatorPolicy", "properties": { "conditions": { "type": "array", @@ -1460,6 +1479,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "OperatorPolicy is the Schema for the operator policies API", @@ -1678,17 +1705,12 @@ "name": "com.rabbitmq.v1beta1.Permission", "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": "PermissionSpec defines the desired state of Permission", "type": "object", + "description": "PermissionSpec defines the desired state of Permission", "required": [ "permissions", "rabbitmqClusterReference", @@ -1757,8 +1779,8 @@ } }, "status": { - "description": "PermissionStatus defines the observed state of Permission", "type": "object", + "description": "PermissionStatus defines the observed state of Permission", "properties": { "conditions": { "type": "array", @@ -1799,6 +1821,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Permission is the Schema for the permissions API", @@ -2016,17 +2046,12 @@ "name": "com.rabbitmq.v1beta1.Policy", "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": "PolicySpec defines the desired state of Policy\nhttps://www.rabbitmq.com/parameters.html#policies", "type": "object", + "description": "PolicySpec defines the desired state of Policy\nhttps://www.rabbitmq.com/parameters.html#policies", "required": [ "definition", "name", @@ -2044,11 +2069,13 @@ "streams", "exchanges", "all" - ] + ], + "default": "all" }, "definition": { "description": "Policy definition. Required property.", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "name": { "description": "Required property; cannot be updated", @@ -2060,7 +2087,8 @@ }, "priority": { "description": "Default to '0'.\nIn the event that more than one policy can match a given exchange or queue, the policy with the greatest priority applies.", - "type": "integer" + "type": "integer", + "default": 0 }, "rabbitmqClusterReference": { "description": "Reference to the RabbitmqCluster that the policy will be created in.\nRequired property.", @@ -2089,13 +2117,14 @@ }, "vhost": { "description": "Default to vhost '/'; cannot be updated", - "type": "string" + "type": "string", + "default": "/" } } }, "status": { - "description": "PolicyStatus defines the observed state of Policy", "type": "object", + "description": "PolicyStatus defines the observed state of Policy", "properties": { "conditions": { "type": "array", @@ -2136,6 +2165,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Policy is the Schema for the policies API", @@ -2356,17 +2393,12 @@ "name": "com.rabbitmq.v1beta1.Queue", "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": "QueueSpec defines the desired state of Queue", "type": "object", + "description": "QueueSpec defines the desired state of Queue", "required": [ "name", "rabbitmqClusterReference" @@ -2374,7 +2406,8 @@ "properties": { "arguments": { "description": "Queue arguments in the format of KEY: VALUE. e.g. x-delivery-limit: 10000.\nConfiguring queues through arguments is not recommended because they cannot be updated once set; we recommend configuring queues through policies instead.", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "autoDelete": { "description": "when set to true, queues that have had at least one consumer before are deleted after the last consumer unsubscribes.", @@ -2426,13 +2459,14 @@ }, "vhost": { "description": "Default to vhost '/'", - "type": "string" + "type": "string", + "default": "/" } } }, "status": { - "description": "QueueStatus defines the observed state of Queue", "type": "object", + "description": "QueueStatus defines the observed state of Queue", "properties": { "conditions": { "type": "array", @@ -2473,6 +2507,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Queue is the Schema for the queues API", @@ -2688,17 +2730,12 @@ "name": "com.rabbitmq.v1beta1.RabbitmqCluster", "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": "Spec is the desired state of the RabbitmqCluster Custom Resource.", "type": "object", + "description": "Spec is the desired state of the RabbitmqCluster Custom Resource.", "properties": { "affinity": { "description": "Affinity scheduling rules to be applied on created Pods.", @@ -3425,7 +3462,8 @@ "description": "DelayStartSeconds is the time the init container (`setup-container`) will sleep before terminating.\nThis effectively delays the time between starting the Pod and starting the `rabbitmq` container.\nRabbitMQ relies on up-to-date DNS entries early during peer discovery.\nThe purpose of this artificial delay is to ensure that DNS entries are up-to-date when booting RabbitMQ.\nFor more information, see https://github.com/kubernetes/kubernetes/issues/92559\nIf your Kubernetes DNS backend is configured with a low DNS cache value or publishes not ready addresses\npromptly, you can decrase this value or set it to 0.", "type": "integer", "format": "int32", - "minimum": 0 + "minimum": 0, + "default": 30 }, "image": { "description": "Image is the name of the RabbitMQ docker image to use for RabbitMQ nodes in the RabbitmqCluster.\nMust be provided together with ImagePullSecrets in order to use an image in a private registry.", @@ -3549,10 +3587,19 @@ "format": "int32" }, "protocol": { - "type": "string" + "type": "string", + "default": "TCP" }, "targetPort": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4406,7 +4453,15 @@ }, "divisor": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "type": "string" @@ -4526,7 +4581,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -4555,7 +4618,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4606,7 +4677,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -4635,7 +4714,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -4707,7 +4794,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -4736,7 +4831,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4776,7 +4879,8 @@ "type": "string" }, "protocol": { - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -4850,7 +4954,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -4879,7 +4991,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4937,14 +5057,30 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -5109,7 +5245,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -5138,7 +5282,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -5339,7 +5491,15 @@ }, "divisor": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "type": "string" @@ -5459,7 +5619,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -5488,7 +5656,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -5539,7 +5715,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -5568,7 +5752,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -5640,7 +5832,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -5669,7 +5869,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -5709,7 +5917,8 @@ "type": "string" }, "protocol": { - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -5783,7 +5992,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -5812,7 +6029,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -5870,14 +6095,30 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -6042,7 +6283,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -6071,7 +6320,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6282,7 +6539,15 @@ }, "divisor": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "type": "string" @@ -6402,7 +6667,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -6431,7 +6704,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -6482,7 +6763,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -6511,7 +6800,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -6583,7 +6880,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -6612,7 +6917,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6652,7 +6965,8 @@ "type": "string" }, "protocol": { - "type": "string" + "type": "string", + "default": "TCP" } } }, @@ -6726,7 +7040,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -6755,7 +7077,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6813,14 +7143,30 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -6985,7 +7331,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "scheme": { "type": "string" @@ -7014,7 +7368,15 @@ "type": "string" }, "port": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -7122,7 +7484,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "preemptionPolicy": { @@ -7678,7 +8048,15 @@ }, "divisor": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "type": "string" @@ -7699,7 +8077,15 @@ }, "sizeLimit": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -7771,14 +8157,30 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -8242,7 +8644,15 @@ }, "divisor": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "type": "string" @@ -8524,7 +8934,15 @@ "type": "object", "properties": { "maxUnavailable": { - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "partition": { "type": "integer", @@ -8627,14 +9045,30 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -8705,12 +9139,24 @@ "storage": { "description": "The requested size of the persistent volume attached to each Pod in the RabbitmqCluster.\nThe format of this field matches that defined by kubernetes/apimachinery.\nSee https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field.", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "default": "10Gi", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "storageClassName": { "description": "The name of the StorageClass to claim a PersistentVolume from.", "type": "string" } + }, + "default": { + "storage": "10Gi" } }, "rabbitmq": { @@ -8754,7 +9200,8 @@ "description": "Replicas is the number of nodes in the RabbitMQ cluster. Each node is deployed as a Replica in a StatefulSet. Only 1, 3, 5 replicas clusters are tested.\nThis value should be an odd number to ensure the resultant cluster can establish exactly one quorum of nodes\nin the event of a fragmenting network partition.", "type": "integer", "format": "int32", - "minimum": 0 + "minimum": 0, + "default": 1 }, "resources": { "description": "The desired compute resource requirements of Pods in the cluster.", @@ -8786,7 +9233,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -8794,9 +9249,27 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } + }, + "default": { + "limits": { + "cpu": "2000m", + "memory": "2Gi" + }, + "requests": { + "cpu": "1000m", + "memory": "2Gi" + } } }, "secretBackend": { @@ -8893,8 +9366,12 @@ "ClusterIP", "LoadBalancer", "NodePort" - ] + ], + "default": "ClusterIP" } + }, + "default": { + "type": "ClusterIP" } }, "skipPostDeploySteps": { @@ -8905,7 +9382,8 @@ "description": "TerminationGracePeriodSeconds is the timeout that each rabbitmqcluster pod will have to terminate gracefully.\nIt defaults to 604800 seconds ( a week long) to ensure that the container preStop lifecycle hook can finish running.\nFor more information, see: https://github.com/rabbitmq/cluster-operator/blob/main/docs/design/20200520-graceful-pod-termination.md", "type": "integer", "format": "int64", - "minimum": 0 + "minimum": 0, + "default": 604800 }, "tls": { "description": "TLS-related configuration for the RabbitMQ cluster.", @@ -8959,8 +9437,8 @@ } }, "status": { - "description": "Status presents the observed state of RabbitmqCluster", "type": "object", + "description": "Status presents the observed state of RabbitmqCluster", "required": [ "conditions" ], @@ -9066,6 +9544,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "RabbitmqCluster is the Schema for the RabbitmqCluster API. Each instance of this object\ncorresponds to a single RabbitMQ cluster.", @@ -16023,17 +16509,12 @@ "name": "com.rabbitmq.v1beta1.SchemaReplication", "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": "SchemaReplicationSpec defines the desired state of SchemaReplication", "type": "object", + "description": "SchemaReplicationSpec defines the desired state of SchemaReplication", "required": [ "rabbitmqClusterReference" ], @@ -16096,8 +16577,8 @@ } }, "status": { - "description": "SchemaReplicationStatus defines the observed state of SchemaReplication", "type": "object", + "description": "SchemaReplicationStatus defines the observed state of SchemaReplication", "properties": { "conditions": { "type": "array", @@ -16138,6 +16619,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "SchemaReplication is the Schema for the schemareplications API\nThis feature requires Tanzu RabbitMQ with schema replication plugin.\nFor more information, see: https://tanzu.vmware.com/rabbitmq and https://www.rabbitmq.com/definitions-standby.html.", @@ -16343,17 +16832,12 @@ "name": "com.rabbitmq.v1beta1.Shovel", "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": "ShovelSpec defines the desired state of Shovel\nFor how to configure Shovel, see: https://www.rabbitmq.com/shovel.html.", "type": "object", + "description": "ShovelSpec defines the desired state of Shovel\nFor how to configure Shovel, see: https://www.rabbitmq.com/shovel.html.", "required": [ "name", "rabbitmqClusterReference", @@ -16386,7 +16870,8 @@ }, "destApplicationProperties": { "description": "amqp10 configuration", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "destExchange": { "description": "amqp091 configuration", @@ -16398,11 +16883,13 @@ }, "destMessageAnnotations": { "description": "amqp10 configuration", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "destProperties": { "description": "amqp10 configuration", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "destProtocol": { "type": "string", @@ -16413,7 +16900,8 @@ }, "destPublishProperties": { "description": "amqp091 configuration", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "destQueue": { "description": "amqp091 configuration", @@ -16460,7 +16948,8 @@ }, "srcConsumerArgs": { "description": "amqp091 configuration", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" }, "srcDeleteAfter": { "type": "string" @@ -16500,13 +16989,14 @@ }, "vhost": { "description": "Default to vhost '/'; cannot be updated", - "type": "string" + "type": "string", + "default": "/" } } }, "status": { - "description": "ShovelStatus defines the observed state of Shovel", "type": "object", + "description": "ShovelStatus defines the observed state of Shovel", "properties": { "conditions": { "type": "array", @@ -16547,6 +17037,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Shovel is the Schema for the shovels API", @@ -16853,17 +17351,12 @@ "name": "com.rabbitmq.v1beta1.TopicPermission", "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": "TopicPermissionSpec defines the desired state of TopicPermission", "type": "object", + "description": "TopicPermissionSpec defines the desired state of TopicPermission", "required": [ "permissions", "rabbitmqClusterReference", @@ -16933,8 +17426,8 @@ } }, "status": { - "description": "TopicPermissionStatus defines the observed state of TopicPermission", "type": "object", + "description": "TopicPermissionStatus defines the observed state of TopicPermission", "properties": { "conditions": { "type": "array", @@ -16975,6 +17468,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "TopicPermission is the Schema for the topicpermissions API", @@ -17187,17 +17688,12 @@ "name": "com.rabbitmq.v1beta1.User", "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": "Spec configures the desired state of the User object.", "type": "object", + "description": "Spec configures the desired state of the User object.", "required": [ "rabbitmqClusterReference" ], @@ -17255,8 +17751,8 @@ } }, "status": { - "description": "Status exposes the observed state of the User object.", "type": "object", + "description": "Status exposes the observed state of the User object.", "required": [ "username" ], @@ -17315,6 +17811,14 @@ "type": "string" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "User is the Schema for the users API.", @@ -17539,17 +18043,12 @@ "name": "com.rabbitmq.v1beta1.Vhost", "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": "VhostSpec defines the desired state of Vhost", "type": "object", + "description": "VhostSpec defines the desired state of Vhost", "required": [ "name", "rabbitmqClusterReference" @@ -17605,8 +18104,8 @@ } }, "status": { - "description": "VhostStatus defines the observed state of Vhost", "type": "object", + "description": "VhostStatus defines the observed state of Vhost", "properties": { "conditions": { "type": "array", @@ -17647,6 +18146,14 @@ "format": "int64" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Vhost is the Schema for the vhosts API", diff --git a/data/redis.json b/data/redis.json index 1769190..b8c4de7 100644 --- a/data/redis.json +++ b/data/redis.json @@ -6,17 +6,12 @@ "name": "in.opstreelabs.redis.redis.v1beta2.Redis", "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": "RedisSpec defines the desired state of Redis", "type": "object", + "description": "RedisSpec defines the desired state of Redis", "required": [ "kubernetesConfig" ], @@ -855,7 +850,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -984,7 +987,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -1055,7 +1066,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -1063,7 +1082,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1145,7 +1172,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -1153,7 +1188,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1188,7 +1231,15 @@ "properties": { "maxUnavailable": { "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "partition": { "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.", @@ -1212,28 +1263,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "nodeSelector": { @@ -1372,28 +1435,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "redisConfig": { @@ -1488,7 +1563,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -1559,7 +1642,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -1567,7 +1658,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -1785,7 +1884,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -1895,7 +2002,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } } @@ -1930,7 +2038,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -1938,7 +2054,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2055,7 +2179,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -2063,7 +2195,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -2149,7 +2289,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "capacity": { @@ -2157,7 +2305,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "conditions": { @@ -2555,7 +2711,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -2579,7 +2743,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -2687,7 +2859,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -2695,7 +2875,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -3188,7 +3376,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -3558,8 +3754,16 @@ } }, "status": { - "description": "RedisStatus defines the observed state of Redis", - "type": "object" + "type": "object", + "description": "RedisStatus defines the observed state of Redis" + }, + "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" } }, "description": "Redis is the Schema for the redis API", @@ -10618,17 +10822,12 @@ "name": "in.opstreelabs.redis.redis.v1beta2.RedisCluster", "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": "RedisClusterSpec defines the desired state of RedisCluster", "type": "object", + "description": "RedisClusterSpec defines the desired state of RedisCluster", "required": [ "clusterSize", "kubernetesConfig" @@ -10754,7 +10953,8 @@ "format": "int32" }, "clusterVersion": { - "type": "string" + "type": "string", + "default": "v7" }, "env": { "type": "array", @@ -10829,7 +11029,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -10958,7 +11166,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -11029,7 +11245,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -11037,7 +11261,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11119,7 +11351,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -11127,7 +11367,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -11162,7 +11410,15 @@ "properties": { "maxUnavailable": { "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "partition": { "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.", @@ -11388,7 +11644,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -11459,7 +11723,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -11467,7 +11739,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -12131,28 +12411,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "nodeSelector": { @@ -12185,28 +12477,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "redisConfig": { @@ -12375,6 +12679,22 @@ } } } + }, + "default": { + "livenessProbe": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "readinessProbe": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 + } } }, "redisLeader": { @@ -13034,28 +13354,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "nodeSelector": { @@ -13088,28 +13420,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "redisConfig": { @@ -13278,6 +13622,22 @@ } } } + }, + "default": { + "livenessProbe": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 + }, + "readinessProbe": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 + } } }, "resources": { @@ -13310,7 +13670,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -13318,7 +13686,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -13415,7 +13791,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -13525,7 +13909,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } } @@ -13560,7 +13945,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -13568,7 +13961,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -13581,7 +13982,8 @@ "type": "object", "properties": { "nodeConfVolume": { - "type": "boolean" + "type": "boolean", + "default": false }, "nodeConfVolumeClaimTemplate": { "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", @@ -13688,7 +14090,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -13696,7 +14106,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -13782,7 +14200,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "capacity": { @@ -13790,7 +14216,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "conditions": { @@ -13945,7 +14379,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -13953,7 +14395,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -14039,7 +14489,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "capacity": { @@ -14047,7 +14505,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "conditions": { @@ -14445,7 +14911,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -14469,7 +14943,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -14577,7 +15059,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -14585,7 +15075,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -15078,7 +15576,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -15414,16 +15920,18 @@ } }, "status": { - "description": "RedisClusterStatus defines the observed state of RedisCluster", "type": "object", + "description": "RedisClusterStatus defines the observed state of RedisCluster", "properties": { "readyFollowerReplicas": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 0 }, "readyLeaderReplicas": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 0 }, "reason": { "type": "string" @@ -15432,6 +15940,14 @@ "type": "string" } } + }, + "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" } }, "description": "RedisCluster is the Schema for the redisclusters API", @@ -24900,13 +25416,8 @@ "name": "in.opstreelabs.redis.redis.v1beta2.RedisReplication", "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": { "type": "object", @@ -25753,7 +26264,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -25882,7 +26401,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -25953,7 +26480,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -25961,7 +26496,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -26043,7 +26586,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -26051,7 +26602,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -26086,7 +26645,15 @@ "properties": { "maxUnavailable": { "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "partition": { "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.", @@ -26110,28 +26677,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "nodeSelector": { @@ -26270,28 +26849,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "redisConfig": { @@ -26386,7 +26977,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -26457,7 +27056,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -26465,7 +27072,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -26683,7 +27298,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -26793,7 +27416,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } } @@ -26828,7 +27452,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -26836,7 +27468,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -26953,7 +27593,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -26961,7 +27609,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -27047,7 +27703,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "capacity": { @@ -27055,7 +27719,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "conditions": { @@ -27453,7 +28125,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -27477,7 +28157,15 @@ "sizeLimit": { "description": "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -27585,7 +28273,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -27593,7 +28289,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -28086,7 +28790,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -28456,8 +29168,16 @@ } }, "status": { - "description": "RedisStatus defines the observed state of Redis", - "type": "object" + "type": "object", + "description": "RedisStatus defines the observed state of Redis" + }, + "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" } }, "description": "Redis is the Schema for the redis API", @@ -35524,13 +36244,8 @@ "name": "in.opstreelabs.redis.redis.v1beta2.RedisSentinel", "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": { "type": "object", @@ -36252,7 +36967,8 @@ "clusterSize": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "env": { "type": "array", @@ -36327,7 +37043,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -36456,7 +37180,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -36527,7 +37259,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -36535,7 +37275,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -36617,7 +37365,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -36625,7 +37381,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -36660,7 +37424,15 @@ "properties": { "maxUnavailable": { "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "partition": { "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.", @@ -36684,28 +37456,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "nodeSelector": { @@ -36861,28 +37645,40 @@ "failureThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 3 }, "initialDelaySeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "periodSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 10 }, "successThreshold": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 }, "timeoutSeconds": { "type": "integer", "format": "int32", - "minimum": 1 + "minimum": 1, + "default": 1 } + }, + "default": { + "failureThreshold": 3, + "initialDelaySeconds": 1, + "periodSeconds": 10, + "successThreshold": 1, + "timeoutSeconds": 1 } }, "redisExporter": { @@ -36968,7 +37764,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -37039,7 +37843,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -37047,7 +37859,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -37064,22 +37884,28 @@ "type": "string" }, "downAfterMilliseconds": { - "type": "string" + "type": "string", + "default": "30000" }, "failoverTimeout": { - "type": "string" + "type": "string", + "default": "180000" }, "masterGroupName": { - "type": "string" + "type": "string", + "default": "myMaster" }, "parallelSyncs": { - "type": "string" + "type": "string", + "default": "1" }, "quorum": { - "type": "string" + "type": "string", + "default": "2" }, "redisPort": { - "type": "string" + "type": "string", + "default": "6379" }, "redisReplicationName": { "type": "string" @@ -37297,7 +38123,15 @@ "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "resource": { "description": "Required: resource to select", @@ -37407,7 +38241,8 @@ }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", - "type": "string" + "type": "string", + "default": "TCP" } } } @@ -37442,7 +38277,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } }, "requests": { @@ -37450,7 +38293,15 @@ "type": "object", "additionalProperties": { "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } } @@ -37496,6 +38347,14 @@ }, "status": { "type": "object" + }, + "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" } }, "description": "Redis is the Schema for the redis API", diff --git a/data/secretgenerator.json b/data/secretgenerator.json index 4b2027d..b6d3c8f 100644 --- a/data/secretgenerator.json +++ b/data/secretgenerator.json @@ -6,17 +6,12 @@ "name": "de.mittwald.secretgenerator.v1alpha1.BasicAuth", "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": "BasicAuthSpec defines the desired state of BasicAuth", "type": "object", + "description": "BasicAuthSpec defines the desired state of BasicAuth", "required": [ "username" ], @@ -42,8 +37,8 @@ } }, "status": { - "description": "BasicAuthStatus defines the observed state of BasicAuth", "type": "object", + "description": "BasicAuthStatus defines the observed state of BasicAuth", "properties": { "secret": { "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", @@ -80,6 +75,14 @@ } } } + }, + "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" } }, "description": "BasicAuth is the Schema for the basicauths API", @@ -244,17 +247,12 @@ "name": "de.mittwald.secretgenerator.v1alpha1.SSHKeyPair", "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": "SSHKeyPairSpec defines the desired state of SSHKeyPair", "type": "object", + "description": "SSHKeyPairSpec defines the desired state of SSHKeyPair", "properties": { "data": { "type": "object", @@ -277,8 +275,8 @@ } }, "status": { - "description": "SSHKeyPairStatus defines the observed state of SSHKeyPair", "type": "object", + "description": "SSHKeyPairStatus defines the observed state of SSHKeyPair", "properties": { "secret": { "description": "INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run \"operator-sdk generate k8s\" to regenerate code after modifying this file Add custom validation using kubebuilder tags: https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html", @@ -315,6 +313,14 @@ } } } + }, + "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" } }, "description": "SSHKeyPair is the Schema for the sshkeypairs API", @@ -476,17 +482,12 @@ "name": "de.mittwald.secretgenerator.v1alpha1.StringSecret", "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": "StringSecretSpec defines the desired state of StringSecret", "type": "object", + "description": "StringSecretSpec defines the desired state of StringSecret", "required": [ "fields" ], @@ -523,8 +524,8 @@ } }, "status": { - "description": "StringSecretStatus defines the observed state of StringSecret", "type": "object", + "description": "StringSecretStatus defines the observed state of StringSecret", "properties": { "secret": { "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", @@ -561,6 +562,14 @@ } } } + }, + "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" } }, "description": "StringSecret is the Schema for the stringsecrets API", diff --git a/data/tekton.json b/data/tekton.json index 53862ec..a801c7f 100644 --- a/data/tekton.json +++ b/data/tekton.json @@ -504,8 +504,135 @@ "type": "string" }, "matrix": { - "description": "Matrix declares parameters used to fan out this task.", - "$ref": "#/definitions/v1.Matrix" + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", @@ -519,18 +646,129 @@ "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Param" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, "pipelineRef": { - "description": "PipelineRef is a reference to a pipeline definition Note: PipelineRef is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineRef" + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "pipelineSpec": { - "description": "PipelineSpec is a specification of a pipeline Note: PipelineSpec is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineSpec" + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "retries": { "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", @@ -547,12 +785,109 @@ "x-kubernetes-list-type": "atomic" }, "taskRef": { - "description": "TaskRef is a reference to a task definition.", - "$ref": "#/definitions/v1.TaskRef" + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "taskSpec": { - "description": "TaskSpec is a specification of a task", - "$ref": "#/definitions/v1.EmbeddedTask" + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "timeout": { "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", @@ -562,16 +897,57 @@ "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WhenExpression" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } } }, "workspaces": { "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WorkspacePipelineTaskBinding" + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } }, "x-kubernetes-list-type": "atomic" } @@ -739,8 +1115,135 @@ "type": "string" }, "matrix": { - "description": "Matrix declares parameters used to fan out this task.", - "$ref": "#/definitions/v1.Matrix" + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", @@ -754,18 +1257,129 @@ "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Param" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, "pipelineRef": { - "description": "PipelineRef is a reference to a pipeline definition Note: PipelineRef is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineRef" + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "pipelineSpec": { - "description": "PipelineSpec is a specification of a pipeline Note: PipelineSpec is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineSpec" + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "retries": { "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", @@ -782,63 +1396,201 @@ "x-kubernetes-list-type": "atomic" }, "taskRef": { - "description": "TaskRef is a reference to a task definition.", - "$ref": "#/definitions/v1.TaskRef" - }, - "taskSpec": { - "description": "TaskSpec is a specification of a task", - "$ref": "#/definitions/v1.EmbeddedTask" - }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.WhenExpression" + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } } }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.WorkspacePipelineTaskBinding" - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", - "type": "string" - }, - "name": { - "description": "Name is the name of a workspace to be provided by a PipelineRun.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - } - } - }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, "x-kubernetes-list-type": "atomic" } } @@ -2099,8 +2851,135 @@ "type": "string" }, "matrix": { - "description": "Matrix declares parameters used to fan out this task.", - "$ref": "#/definitions/v1.Matrix" + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", @@ -2114,18 +2993,129 @@ "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Param" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, "pipelineRef": { - "description": "PipelineRef is a reference to a pipeline definition Note: PipelineRef is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineRef" + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "pipelineSpec": { - "description": "PipelineSpec is a specification of a pipeline Note: PipelineSpec is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineSpec" + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "retries": { "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", @@ -2142,12 +3132,109 @@ "x-kubernetes-list-type": "atomic" }, "taskRef": { - "description": "TaskRef is a reference to a task definition.", - "$ref": "#/definitions/v1.TaskRef" + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "taskSpec": { - "description": "TaskSpec is a specification of a task", - "$ref": "#/definitions/v1.EmbeddedTask" + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "timeout": { "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", @@ -2157,16 +3244,57 @@ "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WhenExpression" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } } }, "workspaces": { "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WorkspacePipelineTaskBinding" + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } }, "x-kubernetes-list-type": "atomic" } @@ -2334,8 +3462,135 @@ "type": "string" }, "matrix": { - "description": "Matrix declares parameters used to fan out this task.", - "$ref": "#/definitions/v1.Matrix" + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", @@ -2349,18 +3604,129 @@ "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Param" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, "pipelineRef": { - "description": "PipelineRef is a reference to a pipeline definition Note: PipelineRef is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineRef" + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "pipelineSpec": { - "description": "PipelineSpec is a specification of a pipeline Note: PipelineSpec is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineSpec" + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "retries": { "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", @@ -2377,12 +3743,109 @@ "x-kubernetes-list-type": "atomic" }, "taskRef": { - "description": "TaskRef is a reference to a task definition.", - "$ref": "#/definitions/v1.TaskRef" + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "taskSpec": { - "description": "TaskSpec is a specification of a task", - "$ref": "#/definitions/v1.EmbeddedTask" + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "timeout": { "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", @@ -2392,16 +3855,57 @@ "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WhenExpression" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } } }, "workspaces": { "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WorkspacePipelineTaskBinding" + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } }, "x-kubernetes-list-type": "atomic" } @@ -4819,8 +6323,135 @@ "type": "string" }, "matrix": { - "description": "Matrix declares parameters used to fan out this task.", - "$ref": "#/definitions/v1.Matrix" + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", @@ -4834,18 +6465,129 @@ "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Param" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, "pipelineRef": { - "description": "PipelineRef is a reference to a pipeline definition Note: PipelineRef is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineRef" + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "pipelineSpec": { - "description": "PipelineSpec is a specification of a pipeline Note: PipelineSpec is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineSpec" + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "retries": { "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", @@ -4862,12 +6604,109 @@ "x-kubernetes-list-type": "atomic" }, "taskRef": { - "description": "TaskRef is a reference to a task definition.", - "$ref": "#/definitions/v1.TaskRef" + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "taskSpec": { - "description": "TaskSpec is a specification of a task", - "$ref": "#/definitions/v1.EmbeddedTask" + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "timeout": { "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", @@ -4877,16 +6716,57 @@ "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WhenExpression" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } } }, "workspaces": { "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WorkspacePipelineTaskBinding" + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } }, "x-kubernetes-list-type": "atomic" } @@ -5054,8 +6934,135 @@ "type": "string" }, "matrix": { - "description": "Matrix declares parameters used to fan out this task.", - "$ref": "#/definitions/v1.Matrix" + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", @@ -5069,18 +7076,129 @@ "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Param" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, "pipelineRef": { - "description": "PipelineRef is a reference to a pipeline definition Note: PipelineRef is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineRef" + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "pipelineSpec": { - "description": "PipelineSpec is a specification of a pipeline Note: PipelineSpec is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineSpec" + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "retries": { "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", @@ -5097,63 +7215,201 @@ "x-kubernetes-list-type": "atomic" }, "taskRef": { - "description": "TaskRef is a reference to a task definition.", - "$ref": "#/definitions/v1.TaskRef" - }, - "taskSpec": { - "description": "TaskSpec is a specification of a task", - "$ref": "#/definitions/v1.EmbeddedTask" - }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.WhenExpression" + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } } }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.WorkspacePipelineTaskBinding" - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", - "type": "string" - }, - "name": { - "description": "Name is the name of a workspace to be provided by a PipelineRun.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - } - } - }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, "x-kubernetes-list-type": "atomic" } } @@ -6414,8 +8670,135 @@ "type": "string" }, "matrix": { - "description": "Matrix declares parameters used to fan out this task.", - "$ref": "#/definitions/v1.Matrix" + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", @@ -6429,18 +8812,129 @@ "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Param" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, "pipelineRef": { - "description": "PipelineRef is a reference to a pipeline definition Note: PipelineRef is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineRef" + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "pipelineSpec": { - "description": "PipelineSpec is a specification of a pipeline Note: PipelineSpec is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineSpec" + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "retries": { "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", @@ -6457,12 +8951,109 @@ "x-kubernetes-list-type": "atomic" }, "taskRef": { - "description": "TaskRef is a reference to a task definition.", - "$ref": "#/definitions/v1.TaskRef" + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "taskSpec": { - "description": "TaskSpec is a specification of a task", - "$ref": "#/definitions/v1.EmbeddedTask" + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "timeout": { "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", @@ -6472,16 +9063,57 @@ "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WhenExpression" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } } }, "workspaces": { "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WorkspacePipelineTaskBinding" + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } }, "x-kubernetes-list-type": "atomic" } @@ -6649,8 +9281,135 @@ "type": "string" }, "matrix": { - "description": "Matrix declares parameters used to fan out this task.", - "$ref": "#/definitions/v1.Matrix" + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", @@ -6664,18 +9423,129 @@ "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Param" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, "pipelineRef": { - "description": "PipelineRef is a reference to a pipeline definition Note: PipelineRef is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineRef" + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "pipelineSpec": { - "description": "PipelineSpec is a specification of a pipeline Note: PipelineSpec is in preview mode and not yet supported", - "$ref": "#/definitions/v1.PipelineSpec" + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "retries": { "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", @@ -6692,12 +9562,109 @@ "x-kubernetes-list-type": "atomic" }, "taskRef": { - "description": "TaskRef is a reference to a task definition.", - "$ref": "#/definitions/v1.TaskRef" + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, "taskSpec": { - "description": "TaskSpec is a specification of a task", - "$ref": "#/definitions/v1.EmbeddedTask" + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, "timeout": { "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", @@ -6707,16 +9674,57 @@ "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WhenExpression" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } } }, "workspaces": { "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.WorkspacePipelineTaskBinding" + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } }, "x-kubernetes-list-type": "atomic" } @@ -8544,7 +11552,8 @@ "kind": "Pipeline", "version": "v1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -9199,122 +12208,472 @@ "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "x-kubernetes-list-type": "atomic" }, "params": { "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ParamSpec" - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineResult" - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "taskRef": { - "description": "TaskRef can be used to refer to a specific instance of a task.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", - "type": "string" - }, - "kind": { - "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "taskSpec": { - "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "description": { - "description": "Description is a user-facing description of the task that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "params": { - "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", - "type": "array", "items": { "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", "type": "object", @@ -9392,34 +12751,28 @@ "x-kubernetes-list-type": "atomic" }, "results": { - "description": "Results are values that this Task can output", + "description": "Results are values that this pipeline can output once run", "type": "array", "items": { - "description": "TaskResult used to describe the results of a task", + "description": "PipelineResult used to describe the results of a pipeline", "type": "object", "required": [ - "name" + "name", + "value" ], "properties": { "description": { "description": "Description is a human-readable description of the result", - "type": "string" + "type": "string", + "default": "" }, "name": { "description": "Name the given name", "type": "string", "default": "" }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, "type": { - "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", "type": "string" }, "value": { @@ -9462,350 +12815,162 @@ }, "x-kubernetes-list-type": "atomic" }, - "sidecars": { - "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", "type": "array", "items": { - "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", "type": "object", - "required": [ - "name" - ], "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Sidecar. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", "type": "string" }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", "type": "string" }, - "lifecycle": { - "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", - "$ref": "#/definitions/v1.Lifecycle" - }, - "livenessProbe": { - "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { - "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", - "type": "string", - "default": "" + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" }, - "ports": { - "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ContainerPort" - }, - "x-kubernetes-list-map-keys": [ - "containerPort", - "protocol" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "containerPort", - "x-kubernetes-patch-strategy": "merge" - }, - "readinessProbe": { - "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "startupProbe": { - "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "stdin": { - "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", - "type": "boolean" - }, - "stdinOnce": { - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", - "type": "boolean" - }, - "terminationMessagePath": { - "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", - "type": "string" - }, - "terminationMessagePolicy": { - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", - "type": "string" - }, - "tty": { - "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", - "type": "boolean" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Sidecar.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "spec": { - "description": "Spec is a specification of a custom task", - "default": {}, - "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" - }, - "stepTemplate": { - "description": "StepTemplate is a template for a Step", - "type": "object", - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - } - } - }, - "steps": { - "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", - "type": "array", - "items": { - "description": "Step runs a subcomponent of a Task", - "type": "object", - "required": [ - "name" - ], - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "name": { - "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", - "type": "string", - "default": "" - }, - "onError": { - "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Params declares parameters passed to this step action.", + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { "description": "Param declares an ParamValues to use for the parameter called name.", @@ -9859,129 +13024,255 @@ }, "x-kubernetes-list-type": "atomic" }, - "ref": { - "description": "Ref can be used to refer to a specific instance of a StepAction.", + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, "name": { - "description": "Name of the referenced step", + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" } } }, - "results": { - "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", - "type": "array", - "items": { - "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" }, - "type": { - "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", - "type": "string" - } + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } - }, - "x-kubernetes-list-type": "atomic" + } }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", - "type": "string" + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" }, - "stderrConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", "type": "object", "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" } } }, - "stdoutConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", "type": "object", "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } } }, "timeout": { - "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", "$ref": "#/definitions/v1.Duration" }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } }, "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", "type": "object", "required": [ - "name", - "mountPath" + "name" ], "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "description": "Name is the name of the workspace as declared by the task", "type": "string", "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" } } }, @@ -9991,44 +13282,27 @@ }, "x-kubernetes-list-type": "atomic" }, - "volumes": { - "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" - }, - "x-kubernetes-list-type": "atomic" - }, "workspaces": { - "description": "Workspaces are the volumes that this Task requires.", + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", "type": "array", "items": { - "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", "type": "object", "required": [ "name" ], "properties": { "description": { - "description": "Description is an optional human readable description of this volume.", - "type": "string" - }, - "mountPath": { - "description": "MountPath overrides the directory that the volume will be made available at.", + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", "type": "string" }, "name": { - "description": "Name is the name by which you can bind the volume at runtime.", + "description": "Name is the name of a workspace to be provided by a PipelineRun.", "type": "string", "default": "" }, "optional": { - "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - }, - "readOnly": { - "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", "type": "boolean" } } @@ -10037,505 +13311,13 @@ } } }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", - "type": "object", - "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", - "type": "string" - }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" - }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" - }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - } - } - } - }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", - "type": "array", - "items": { - "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name is the name of the workspace as declared by the task", - "type": "string", - "default": "" - }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" - }, - "workspace": { - "description": "Workspace is the name of the workspace declared by the pipeline", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "description": "PipelineResult used to describe the results of a pipeline", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string", - "default": "" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "type": { - "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", - "type": "string" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", - "type": "string" - }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", - "type": "object", - "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", - "type": "array", - "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", - "type": "object", - "properties": { - "name": { - "description": "Name the specified combination", - "type": "string" - }, - "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ParamSpec" - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineResult" - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", "type": "array", "items": { "type": "string", @@ -11390,153 +14172,54 @@ }, "x-kubernetes-list-type": "atomic" }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", "type": "array", "items": { - "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", "type": "object", "required": [ "name" ], "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, "description": { - "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", - "type": "string" - }, - "name": { - "description": "Name is the name of a workspace to be provided by a PipelineRun.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "taskRef": { - "description": "TaskRef can be used to refer to a specific instance of a task.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", - "type": "string" - }, - "kind": { - "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "taskSpec": { - "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "description": { - "description": "Description is a user-facing description of the task that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "params": { - "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", "type": "string" }, "enum": { @@ -11569,34 +14252,28 @@ "x-kubernetes-list-type": "atomic" }, "results": { - "description": "Results are values that this Task can output", + "description": "Results are values that this pipeline can output once run", "type": "array", "items": { - "description": "TaskResult used to describe the results of a task", + "description": "PipelineResult used to describe the results of a pipeline", "type": "object", "required": [ - "name" + "name", + "value" ], "properties": { "description": { "description": "Description is a human-readable description of the result", - "type": "string" + "type": "string", + "default": "" }, "name": { "description": "Name the given name", "type": "string", "default": "" }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, "type": { - "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", "type": "string" }, "value": { @@ -11639,1058 +14316,1008 @@ }, "x-kubernetes-list-type": "atomic" }, - "sidecars": { - "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", "type": "array", "items": { - "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", "type": "object", - "required": [ - "name" - ], "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Sidecar. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", "type": "string" }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", "type": "string" }, - "lifecycle": { - "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", - "$ref": "#/definitions/v1.Lifecycle" - }, - "livenessProbe": { - "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, "name": { - "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", - "type": "string", - "default": "" - }, - "ports": { - "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ContainerPort" - }, - "x-kubernetes-list-map-keys": [ - "containerPort", - "protocol" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "containerPort", - "x-kubernetes-patch-strategy": "merge" - }, - "readinessProbe": { - "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "startupProbe": { - "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "stdin": { - "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", - "type": "boolean" - }, - "stdinOnce": { - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", - "type": "boolean" - }, - "terminationMessagePath": { - "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", - "type": "string" - }, - "terminationMessagePolicy": { - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", "type": "string" }, - "tty": { - "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", - "type": "boolean" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Sidecar.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", "type": "string" }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "params": { + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "description": "Param declares an ParamValues to use for the parameter called name.", "type": "object", "required": [ "name", - "mountPath" + "value" ], "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", "type": "string", "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } } } }, "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "spec": { - "description": "Spec is a specification of a custom task", - "default": {}, - "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" - }, - "stepTemplate": { - "description": "StepTemplate is a template for a Step", - "type": "object", - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - } - } - }, - "steps": { - "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", - "type": "array", - "items": { - "description": "Step runs a subcomponent of a Task", - "type": "object", - "required": [ - "name" - ], - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "name": { - "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", - "type": "string", - "default": "" - }, - "onError": { - "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", - "type": "string" + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, - "params": { - "description": "Params declares parameters passed to this step action.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], "properties": { - "ArrayVal": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "type": "string", - "default": "" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", - "additionalProperties": { + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { "type": "string", "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } } }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, - "Type": { - "type": "string", - "default": "" + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "ref": { - "description": "Ref can be used to refer to a specific instance of a StepAction.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referenced step", - "type": "string" - } - } - }, - "results": { - "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", - "type": "array", - "items": { - "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "stderrConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", - "type": "object", - "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", - "type": "string" - } - } - }, - "stdoutConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", - "type": "object", - "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", - "type": "string" - } - } - }, - "timeout": { - "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumes": { - "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces are the volumes that this Task requires.", - "type": "array", - "items": { - "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is an optional human readable description of this volume.", - "type": "string" - }, - "mountPath": { - "description": "MountPath overrides the directory that the volume will be made available at.", - "type": "string" - }, - "name": { - "description": "Name is the name by which you can bind the volume at runtime.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - }, - "readOnly": { - "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", - "type": "object", - "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", - "type": "string" - }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" - }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" - }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - } - } - } - }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", - "type": "array", - "items": { - "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name is the name of the workspace as declared by the task", - "type": "string", - "default": "" - }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" - }, - "workspace": { - "description": "Workspace is the name of the workspace declared by the pipeline", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "description": "PipelineResult used to describe the results of a pipeline", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string", - "default": "" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "type": { - "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", - "type": "string" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", - "type": "string" - }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", - "type": "object", - "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", - "type": "array", - "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", - "type": "object", - "properties": { - "name": { - "description": "Name the specified combination", - "type": "string" - }, - "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", "type": "object", "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" + "name" ], "properties": { - "ArrayVal": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", "type": "array", "items": { "type": "string", "default": "" - }, - "x-kubernetes-list-type": "atomic" + } }, - "ObjectVal": { + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", "type": "object", "additionalProperties": { - "type": "string", - "default": "" + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" } }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", "type": "string", "default": "" }, - "Type": { + "name": { + "description": "Name the given name", "type": "string", "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } } } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", - "type": "string" - }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", - "type": "object", - "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", "type": "array", "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", "type": "object", "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, "name": { - "description": "Name the specified combination", + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", "type": "string" }, "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { "description": "Param declares an ParamValues to use for the parameter called name.", @@ -12743,102 +15370,87 @@ } }, "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], "properties": { - "ArrayVal": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", "type": "array", "items": { - "type": "string", - "default": "" + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" }, - "Type": { - "type": "string", - "default": "" + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", "type": "array", "items": { "type": "string", @@ -12846,34 +15458,230 @@ }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", "type": "object", - "additionalProperties": { - "type": "string", - "default": "" + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } } }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, - "Type": { + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", "type": "string", "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" } } - } + }, + "x-kubernetes-list-type": "atomic" } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" }, "x-kubernetes-list-type": "atomic" }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", "type": "object", "properties": { "apiVersion": { - "description": "API version of the referent", + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", "type": "string" }, "name": { @@ -12882,110 +15690,19 @@ } } }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", "type": "object", "properties": { + "apiVersion": { + "type": "string" + }, "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "description": "Description is a user-facing description of the task that may be used to populate a UI.", "type": "string" }, "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ParamSpec" - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineResult" - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "taskRef": { - "description": "TaskRef can be used to refer to a specific instance of a task.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", - "type": "string" - }, - "kind": { - "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "taskSpec": { - "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "description": { - "description": "Description is a user-facing description of the task that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", "type": "string" }, "kind": { @@ -13802,8 +16519,107 @@ }, "x-kubernetes-list-type": "atomic" }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", "type": "array", "items": { "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", @@ -13882,28 +16698,34 @@ "x-kubernetes-list-type": "atomic" }, "results": { - "description": "Results are values that this pipeline can output once run", + "description": "Results are values that this Task can output", "type": "array", "items": { - "description": "PipelineResult used to describe the results of a pipeline", + "description": "TaskResult used to describe the results of a task", "type": "object", "required": [ - "name", - "value" + "name" ], "properties": { "description": { "description": "Description is a human-readable description of the result", - "type": "string", - "default": "" + "type": "string" }, "name": { "description": "Name the given name", "type": "string", "default": "" }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, "type": { - "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", "type": "string" }, "value": { @@ -13946,191 +16768,379 @@ }, "x-kubernetes-list-type": "atomic" }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", "type": "array", "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", "type": "object", + "required": [ + "name" + ], "properties": { - "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Sidecar. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", "type": "string" }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", "type": "string" }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", - "type": "object", - "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", - "type": "array", - "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", - "type": "object", - "properties": { - "name": { - "description": "Name the specified combination", - "type": "string" - }, - "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } + "lifecycle": { + "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" }, "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string", + "default": "" + }, + "ports": { + "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ContainerPort" + }, + "x-kubernetes-list-map-keys": [ + "containerPort", + "protocol" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "containerPort", + "x-kubernetes-patch-strategy": "merge" + }, + "readinessProbe": { + "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", "type": "string" }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "securityContext": { + "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", "type": "string" }, - "params": { - "description": "Parameters declares parameters passed to this task.", + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Sidecar.", "type": "array", "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", "type": "object", "required": [ "name", - "value" + "mountPath" ], "properties": { - "name": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", "type": "string", "default": "" }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate is a template for a Step", + "type": "object", + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "description": "Step runs a subcomponent of a Task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "name": { + "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", + "type": "string", + "default": "" + }, + "onError": { + "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Params declares parameters passed to this step action.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, "x-kubernetes-list-type": "atomic" }, "ObjectVal": { @@ -14155,311 +17165,450 @@ }, "x-kubernetes-list-type": "atomic" }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "ref": { + "description": "Ref can be used to refer to a specific instance of a StepAction.", "type": "object", "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "description": "Name of the referenced step", "type": "string" } } }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ParamSpec" - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineResult" + "results": { + "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", + "type": "array", + "items": { + "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" + "name": { + "description": "Name the given name", + "type": "string", + "default": "" }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } }, - "x-kubernetes-list-type": "atomic" + "type": { + "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", + "type": "string" + } } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", - "type": "array", - "items": { - "type": "string", - "default": "" }, "x-kubernetes-list-type": "atomic" }, - "taskRef": { - "description": "TaskRef can be used to refer to a specific instance of a task.", + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "stderrConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", "type": "object", "properties": { - "apiVersion": { - "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", - "type": "string" - }, - "kind": { - "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", "type": "string" } } }, - "taskSpec": { - "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "stdoutConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", "type": "object", "properties": { - "apiVersion": { - "type": "string" - }, - "description": { - "description": "Description is a user-facing description of the task that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", - "type": "string" - }, - "kind": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", "type": "string" - }, - "metadata": { - "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "params": { - "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" - } - } + } + } + }, + "timeout": { + "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this Task can output", - "type": "array", - "items": { - "description": "TaskResult used to describe the results of a task", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", - "type": "string" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is an optional human readable description of this volume.", + "type": "string" + }, + "mountPath": { + "description": "MountPath overrides the directory that the volume will be made available at.", + "type": "string" + }, + "name": { + "description": "Name is the name by which you can bind the volume at runtime.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + }, + "readOnly": { + "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" }, - "x-kubernetes-list-type": "atomic" - }, - "sidecars": { - "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", - "type": "array", - "items": { - "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "value": { + "description": "ResultValue is a type alias of ParamValue", "type": "object", "required": [ - "name" + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" ], "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "ArrayVal": { "type": "array", "items": { "type": "string", @@ -14467,331 +17616,210 @@ }, "x-kubernetes-list-type": "atomic" }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { + "ObjectVal": { + "type": "object", + "additionalProperties": { "type": "string", "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Sidecar. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "lifecycle": { - "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", - "$ref": "#/definitions/v1.Lifecycle" - }, - "livenessProbe": { - "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" + } }, - "name": { - "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", + "StringVal": { + "description": "Represents the stored type of ParamValues.", "type": "string", "default": "" }, - "ports": { - "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ContainerPort" - }, - "x-kubernetes-list-map-keys": [ - "containerPort", - "protocol" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "containerPort", - "x-kubernetes-patch-strategy": "merge" - }, - "readinessProbe": { - "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "startupProbe": { - "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "stdin": { - "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", - "type": "boolean" - }, - "stdinOnce": { - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", - "type": "boolean" - }, - "terminationMessagePath": { - "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", - "type": "string" - }, - "terminationMessagePolicy": { - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", - "type": "string" - }, - "tty": { - "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", - "type": "boolean" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Sidecar.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" + "Type": { + "type": "string", + "default": "" } } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" }, "x-kubernetes-list-type": "atomic" }, - "spec": { - "description": "Spec is a specification of a custom task", - "default": {}, - "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" - }, - "stepTemplate": { - "description": "StepTemplate is a template for a Step", + "ObjectVal": { "type": "object", - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - } + "additionalProperties": { + "type": "string", + "default": "" } }, - "steps": { - "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", "type": "array", "items": { - "description": "Step runs a subcomponent of a Task", + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", "type": "object", - "required": [ - "name" - ], "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, "name": { - "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", - "type": "string", - "default": "" - }, - "onError": { - "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "description": "Name the specified combination", "type": "string" }, "params": { - "description": "Params declares parameters passed to this step action.", + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", "type": "array", "items": { "description": "Param declares an ParamValues to use for the parameter called name.", @@ -14844,178 +17872,61 @@ } }, "x-kubernetes-list-type": "atomic" - }, - "ref": { - "description": "Ref can be used to refer to a specific instance of a StepAction.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referenced step", - "type": "string" - } - } - }, - "results": { - "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", - "type": "array", - "items": { - "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "stderrConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", - "type": "object", - "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", - "type": "string" - } - } - }, - "stdoutConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", - "type": "object", - "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", - "type": "string" - } - } - }, - "timeout": { - "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" } } }, "x-kubernetes-list-type": "atomic" }, - "volumes": { - "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces are the volumes that this Task requires.", + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", "type": "array", "items": { - "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "description": "Param declares an ParamValues to use for the parameter called name.", "type": "object", "required": [ - "name" + "name", + "value" ], "properties": { - "description": { - "description": "Description is an optional human readable description of this volume.", - "type": "string" - }, - "mountPath": { - "description": "MountPath overrides the directory that the volume will be made available at.", - "type": "string" - }, "name": { - "description": "Name is the name by which you can bind the volume at runtime.", "type": "string", "default": "" }, - "optional": { - "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - }, - "readOnly": { - "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", - "type": "boolean" + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } } } }, @@ -15023,1259 +17934,5597 @@ } } }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", - "type": "object", - "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", - "type": "string" - }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" - }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" - }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - } - } - } + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "params": { + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "description": "Param declares an ParamValues to use for the parameter called name.", "type": "object", "required": [ - "name" + "name", + "value" ], "properties": { "name": { - "description": "Name is the name of the workspace as declared by the task", "type": "string", "default": "" }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" - }, - "workspace": { - "description": "Workspace is the name of the workspace declared by the pipeline", - "type": "string" + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } } } }, "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", - "type": "string" - }, - "name": { - "description": "Name is the name of a workspace to be provided by a PipelineRun.", - "type": "string", - "default": "" }, - "optional": { - "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "taskRef": { - "description": "TaskRef can be used to refer to a specific instance of a task.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", - "type": "string" - }, - "kind": { - "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "taskSpec": { - "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "description": { - "description": "Description is a user-facing description of the task that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "params": { - "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "apiVersion": { + "description": "API version of the referent", + "type": "string" }, - "Type": { - "type": "string", - "default": "" + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" } } }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this Task can output", - "type": "array", - "items": { - "description": "TaskResult used to describe the results of a task", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", - "type": "string" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "sidecars": { - "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", - "type": "array", - "items": { - "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Sidecar. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "lifecycle": { - "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", - "$ref": "#/definitions/v1.Lifecycle" - }, - "livenessProbe": { - "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "name": { - "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", - "type": "string", - "default": "" - }, - "ports": { - "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ContainerPort" - }, - "x-kubernetes-list-map-keys": [ - "containerPort", - "protocol" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "containerPort", - "x-kubernetes-patch-strategy": "merge" - }, - "readinessProbe": { - "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "startupProbe": { - "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "stdin": { - "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", - "type": "boolean" - }, - "stdinOnce": { - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", - "type": "boolean" - }, - "terminationMessagePath": { - "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", - "type": "string" - }, - "terminationMessagePolicy": { - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", - "type": "string" - }, - "tty": { - "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", - "type": "boolean" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Sidecar.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "spec": { - "description": "Spec is a specification of a custom task", - "default": {}, - "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" - }, - "stepTemplate": { - "description": "StepTemplate is a template for a Step", - "type": "object", - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - } - } - }, - "steps": { - "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", - "type": "array", - "items": { - "description": "Step runs a subcomponent of a Task", - "type": "object", - "required": [ - "name" - ], - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "name": { - "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", - "type": "string", - "default": "" - }, - "onError": { - "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Params declares parameters passed to this step action.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], "properties": { - "ArrayVal": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { - "type": "string", - "default": "" + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", - "additionalProperties": { + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { "type": "string", "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } } }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, - "Type": { - "type": "string", - "default": "" + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "ref": { - "description": "Ref can be used to refer to a specific instance of a StepAction.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referenced step", - "type": "string" - } - } - }, - "results": { - "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", - "type": "array", - "items": { - "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "description": "PipelineResult used to describe the results of a pipeline", "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } } }, - "type": { - "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", - "type": "string" - } + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" } - }, - "x-kubernetes-list-type": "atomic" + } }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", - "type": "string" + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" }, - "stderrConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", "type": "object", "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", "type": "string" - } - } - }, - "stdoutConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", - "type": "object", - "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" } } }, - "timeout": { - "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumes": { - "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces are the volumes that this Task requires.", - "type": "array", - "items": { - "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is an optional human readable description of this volume.", - "type": "string" - }, - "mountPath": { - "description": "MountPath overrides the directory that the volume will be made available at.", - "type": "string" - }, - "name": { - "description": "Name is the name by which you can bind the volume at runtime.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - }, - "readOnly": { - "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", - "type": "object", - "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", - "type": "string" - }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" - }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" - }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - } - } - } - }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", - "type": "array", - "items": { - "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name is the name of the workspace as declared by the task", - "type": "string", - "default": "" - }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" - }, - "workspace": { - "description": "Workspace is the name of the workspace declared by the pipeline", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", - "type": "string" - }, - "name": { - "description": "Name is the name of a workspace to be provided by a PipelineRun.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "status": { - "description": "Used for cancelling a pipelinerun (and maybe more later on)", - "type": "string" - }, - "taskRunSpecs": { - "description": "TaskRunSpecs holds a set of runtime specs", - "type": "array", - "items": { - "description": "PipelineTaskRunSpec can be used to configure specific specs for a concrete Task", - "type": "object", - "properties": { - "computeResources": { - "description": "Compute resources to use for this TaskRun", - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "metadata": { - "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "pipelineTaskName": { - "type": "string" - }, - "podTemplate": { - "description": "Template holds pod specific configuration", - "type": "object", - "properties": { - "affinity": { - "description": "If specified, the pod's scheduling constraints", - "$ref": "#/definitions/v1.Affinity" - }, - "automountServiceAccountToken": { - "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.", - "type": "boolean" - }, - "dnsConfig": { - "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", - "$ref": "#/definitions/v1.PodDNSConfig" - }, - "dnsPolicy": { - "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.", - "type": "string" - }, - "enableServiceLinks": { - "description": "EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", - "type": "boolean" - }, - "env": { - "description": "List of environment variables that can be provided to the containers belonging to the pod.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "hostAliases": { - "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.HostAlias" - }, - "x-kubernetes-list-type": "atomic" - }, - "hostNetwork": { - "description": "HostNetwork specifies whether the pod may use the node network namespace", - "type": "boolean" - }, - "imagePullSecrets": { - "description": "ImagePullSecrets gives the name of the secret used by the pod to pull the image if specified", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.LocalObjectReference" - }, - "x-kubernetes-list-type": "atomic" - }, - "nodeSelector": { - "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "priorityClassName": { - "description": "If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", - "type": "string" - }, - "runtimeClassName": { - "description": "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.", - "type": "string" - }, - "schedulerName": { - "description": "SchedulerName specifies the scheduler to be used to dispatch the Pod", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", - "$ref": "#/definitions/v1.PodSecurityContext" - }, - "tolerations": { - "description": "If specified, the pod's tolerations.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Toleration" - }, - "x-kubernetes-list-type": "atomic" - }, - "topologySpreadConstraints": { - "description": "TopologySpreadConstraints controls how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.TopologySpreadConstraint" - }, - "x-kubernetes-list-type": "atomic" - }, - "volumes": { - "description": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge,retainKeys" - } - } - }, - "serviceAccountName": { - "type": "string" - }, - "sidecarSpecs": { - "type": "array", - "items": { - "description": "TaskRunSidecarSpec is used to override the values of a Sidecar in the corresponding Task.", - "type": "object", - "required": [ - "name", - "computeResources" - ], - "properties": { - "computeResources": { - "description": "The resource requirements to apply to the Sidecar.", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "name": { - "description": "The name of the Sidecar to override.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "stepSpecs": { - "type": "array", - "items": { - "description": "TaskRunStepSpec is used to override the values of a Step in the corresponding Task.", - "type": "object", - "required": [ - "name", - "computeResources" - ], - "properties": { - "computeResources": { - "description": "The resource requirements to apply to the Step.", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "name": { - "description": "The name of the Step to override.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "taskRunTemplate": { - "description": "PipelineTaskRunTemplate is used to specify run specifications for all Task in pipelinerun.", - "type": "object", - "properties": { - "podTemplate": { - "description": "Template holds pod specific configuration", - "type": "object", - "properties": { - "affinity": { - "description": "If specified, the pod's scheduling constraints", - "$ref": "#/definitions/v1.Affinity" - }, - "automountServiceAccountToken": { - "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.", - "type": "boolean" - }, - "dnsConfig": { - "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", - "$ref": "#/definitions/v1.PodDNSConfig" - }, - "dnsPolicy": { - "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.", - "type": "string" - }, - "enableServiceLinks": { - "description": "EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", - "type": "boolean" - }, - "env": { - "description": "List of environment variables that can be provided to the containers belonging to the pod.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "hostAliases": { - "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.HostAlias" - }, - "x-kubernetes-list-type": "atomic" - }, - "hostNetwork": { - "description": "HostNetwork specifies whether the pod may use the node network namespace", - "type": "boolean" - }, - "imagePullSecrets": { - "description": "ImagePullSecrets gives the name of the secret used by the pod to pull the image if specified", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.LocalObjectReference" - }, - "x-kubernetes-list-type": "atomic" - }, - "nodeSelector": { - "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "description": "TaskResult used to describe the results of a task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Sidecar. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "lifecycle": { + "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "name": { + "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string", + "default": "" + }, + "ports": { + "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ContainerPort" + }, + "x-kubernetes-list-map-keys": [ + "containerPort", + "protocol" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "containerPort", + "x-kubernetes-patch-strategy": "merge" + }, + "readinessProbe": { + "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Sidecar.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate is a template for a Step", + "type": "object", + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "description": "Step runs a subcomponent of a Task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "name": { + "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", + "type": "string", + "default": "" + }, + "onError": { + "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Params declares parameters passed to this step action.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "ref": { + "description": "Ref can be used to refer to a specific instance of a StepAction.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referenced step", + "type": "string" + } + } + }, + "results": { + "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", + "type": "array", + "items": { + "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "stderrConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "stdoutConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "timeout": { + "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is an optional human readable description of this volume.", + "type": "string" + }, + "mountPath": { + "description": "MountPath overrides the directory that the volume will be made available at.", + "type": "string" + }, + "name": { + "description": "Name is the name by which you can bind the volume at runtime.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + }, + "readOnly": { + "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "description": "TaskResult used to describe the results of a task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Sidecar. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "lifecycle": { + "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "name": { + "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string", + "default": "" + }, + "ports": { + "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ContainerPort" + }, + "x-kubernetes-list-map-keys": [ + "containerPort", + "protocol" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "containerPort", + "x-kubernetes-patch-strategy": "merge" + }, + "readinessProbe": { + "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Sidecar.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate is a template for a Step", + "type": "object", + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "description": "Step runs a subcomponent of a Task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "name": { + "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", + "type": "string", + "default": "" + }, + "onError": { + "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Params declares parameters passed to this step action.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "ref": { + "description": "Ref can be used to refer to a specific instance of a StepAction.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referenced step", + "type": "string" + } + } + }, + "results": { + "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", + "type": "array", + "items": { + "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "stderrConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "stdoutConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "timeout": { + "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is an optional human readable description of this volume.", + "type": "string" + }, + "mountPath": { + "description": "MountPath overrides the directory that the volume will be made available at.", + "type": "string" + }, + "name": { + "description": "Name is the name by which you can bind the volume at runtime.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + }, + "readOnly": { + "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "description": "TaskResult used to describe the results of a task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Sidecar. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "lifecycle": { + "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "name": { + "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string", + "default": "" + }, + "ports": { + "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ContainerPort" + }, + "x-kubernetes-list-map-keys": [ + "containerPort", + "protocol" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "containerPort", + "x-kubernetes-patch-strategy": "merge" + }, + "readinessProbe": { + "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Sidecar.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate is a template for a Step", + "type": "object", + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "description": "Step runs a subcomponent of a Task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "name": { + "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", + "type": "string", + "default": "" + }, + "onError": { + "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Params declares parameters passed to this step action.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "ref": { + "description": "Ref can be used to refer to a specific instance of a StepAction.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referenced step", + "type": "string" + } + } + }, + "results": { + "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", + "type": "array", + "items": { + "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "stderrConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "stdoutConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "timeout": { + "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is an optional human readable description of this volume.", + "type": "string" + }, + "mountPath": { + "description": "MountPath overrides the directory that the volume will be made available at.", + "type": "string" + }, + "name": { + "description": "Name is the name by which you can bind the volume at runtime.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + }, + "readOnly": { + "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "status": { + "description": "Used for cancelling a pipelinerun (and maybe more later on)", + "type": "string" + }, + "taskRunSpecs": { + "description": "TaskRunSpecs holds a set of runtime specs", + "type": "array", + "items": { + "description": "PipelineTaskRunSpec can be used to configure specific specs for a concrete Task", + "type": "object", + "properties": { + "computeResources": { + "description": "Compute resources to use for this TaskRun", + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "metadata": { + "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, + "pipelineTaskName": { + "type": "string" + }, + "podTemplate": { + "description": "Template holds pod specific configuration", + "type": "object", + "properties": { + "affinity": { + "description": "If specified, the pod's scheduling constraints", + "$ref": "#/definitions/v1.Affinity" + }, + "automountServiceAccountToken": { + "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.", + "type": "boolean" + }, + "dnsConfig": { + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", + "$ref": "#/definitions/v1.PodDNSConfig" + }, + "dnsPolicy": { + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.", + "type": "string" + }, + "enableServiceLinks": { + "description": "EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", + "type": "boolean" + }, + "env": { + "description": "List of environment variables that can be provided to the containers belonging to the pod.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "hostAliases": { + "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.HostAlias" + }, + "x-kubernetes-list-type": "atomic" + }, + "hostNetwork": { + "description": "HostNetwork specifies whether the pod may use the node network namespace", + "type": "boolean" + }, + "imagePullSecrets": { + "description": "ImagePullSecrets gives the name of the secret used by the pod to pull the image if specified", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "x-kubernetes-list-type": "atomic" + }, + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "priorityClassName": { + "description": "If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", + "type": "string" + }, + "runtimeClassName": { + "description": "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.", + "type": "string" + }, + "schedulerName": { + "description": "SchedulerName specifies the scheduler to be used to dispatch the Pod", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", + "$ref": "#/definitions/v1.PodSecurityContext" + }, + "tolerations": { + "description": "If specified, the pod's tolerations.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Toleration" + }, + "x-kubernetes-list-type": "atomic" + }, + "topologySpreadConstraints": { + "description": "TopologySpreadConstraints controls how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TopologySpreadConstraint" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge,retainKeys" + } + } + }, + "serviceAccountName": { + "type": "string" + }, + "sidecarSpecs": { + "type": "array", + "items": { + "description": "TaskRunSidecarSpec is used to override the values of a Sidecar in the corresponding Task.", + "type": "object", + "required": [ + "name", + "computeResources" + ], + "properties": { + "computeResources": { + "description": "The resource requirements to apply to the Sidecar.", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "name": { + "description": "The name of the Sidecar to override.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "stepSpecs": { + "type": "array", + "items": { + "description": "TaskRunStepSpec is used to override the values of a Step in the corresponding Task.", + "type": "object", + "required": [ + "name", + "computeResources" + ], + "properties": { + "computeResources": { + "description": "The resource requirements to apply to the Step.", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "name": { + "description": "The name of the Step to override.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRunTemplate": { + "description": "PipelineTaskRunTemplate is used to specify run specifications for all Task in pipelinerun.", + "type": "object", + "properties": { + "podTemplate": { + "description": "Template holds pod specific configuration", + "type": "object", + "properties": { + "affinity": { + "description": "If specified, the pod's scheduling constraints", + "$ref": "#/definitions/v1.Affinity" + }, + "automountServiceAccountToken": { + "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.", + "type": "boolean" + }, + "dnsConfig": { + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", + "$ref": "#/definitions/v1.PodDNSConfig" + }, + "dnsPolicy": { + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.", + "type": "string" + }, + "enableServiceLinks": { + "description": "EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", + "type": "boolean" + }, + "env": { + "description": "List of environment variables that can be provided to the containers belonging to the pod.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "hostAliases": { + "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.HostAlias" + }, + "x-kubernetes-list-type": "atomic" + }, + "hostNetwork": { + "description": "HostNetwork specifies whether the pod may use the node network namespace", + "type": "boolean" + }, + "imagePullSecrets": { + "description": "ImagePullSecrets gives the name of the secret used by the pod to pull the image if specified", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "x-kubernetes-list-type": "atomic" + }, + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", "type": "object", "additionalProperties": { "type": "string", @@ -16391,174 +23640,2880 @@ "type": "string", "default": "" }, - "hotpluggable": { - "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", - "type": "boolean" + "hotpluggable": { + "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", + "type": "boolean" + }, + "readOnly": { + "description": "readOnly Will force the ReadOnly setting in VolumeMounts. Default false.", + "type": "boolean" + } + } + }, + "projected": { + "description": "Projected represents a projected volume that should populate this workspace.", + "$ref": "#/definitions/v1.ProjectedVolumeSource" + }, + "secret": { + "description": "Secret represents a secret that should populate this workspace.", + "$ref": "#/definitions/v1.SecretVolumeSource" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "volumeClaimTemplate": { + "description": "VolumeClaimTemplate is a template for a claim that will be created in the same namespace. The PipelineRun controller is responsible for creating a unique claim for each instance of PipelineRun.", + "$ref": "#/definitions/v1.PersistentVolumeClaim" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "status": { + "description": "PipelineRunStatus defines the observed state of PipelineRun", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.", + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "childReferences": { + "description": "list of TaskRun and Run names, PipelineTask names, and API versions/kinds for children of this PipelineRun.", + "type": "array", + "items": { + "description": "ChildStatusReference is used to point to the statuses of individual TaskRuns and Runs within this PipelineRun.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "description": "Name is the name of the TaskRun or Run this is referencing.", + "type": "string" + }, + "pipelineTaskName": { + "description": "PipelineTaskName is the name of the PipelineTask this is referencing.", + "type": "string" + }, + "whenExpressions": { + "description": "WhenExpressions is the list of checks guarding the execution of the PipelineTask", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "completionTime": { + "description": "CompletionTime is the time the PipelineRun completed.", + "$ref": "#/definitions/v1.Time" + }, + "conditions": { + "description": "Conditions the latest available observations of a resource's current state.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/knative.Condition" + }, + "x-kubernetes-patch-merge-key": "type", + "x-kubernetes-patch-strategy": "merge" + }, + "finallyStartTime": { + "description": "FinallyStartTime is when all non-finally tasks have been completed and only finally tasks are being executed.", + "$ref": "#/definitions/v1.Time" + }, + "observedGeneration": { + "description": "ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.", + "type": "integer", + "format": "int64" + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" }, - "readOnly": { - "description": "readOnly Will force the ReadOnly setting in VolumeMounts. Default false.", - "type": "boolean" - } - } - }, - "projected": { - "description": "Projected represents a projected volume that should populate this workspace.", - "$ref": "#/definitions/v1.ProjectedVolumeSource" - }, - "secret": { - "description": "Secret represents a secret that should populate this workspace.", - "$ref": "#/definitions/v1.SecretVolumeSource" - }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" - }, - "volumeClaimTemplate": { - "description": "VolumeClaimTemplate is a template for a claim that will be created in the same namespace. The PipelineRun controller is responsible for creating a unique claim for each instance of PipelineRun.", - "$ref": "#/definitions/v1.PersistentVolumeClaim" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "status": { - "description": "PipelineRunStatus defines the observed state of PipelineRun", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.", - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "childReferences": { - "description": "list of TaskRun and Run names, PipelineTask names, and API versions/kinds for children of this PipelineRun.", - "type": "array", - "items": { - "description": "ChildStatusReference is used to point to the statuses of individual TaskRuns and Runs within this PipelineRun.", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "name": { - "description": "Name is the name of the TaskRun or Run this is referencing.", - "type": "string" - }, - "pipelineTaskName": { - "description": "PipelineTaskName is the name of the PipelineTask this is referencing.", - "type": "string" - }, - "whenExpressions": { - "description": "WhenExpressions is the list of checks guarding the execution of the PipelineTask", - "type": "array", - "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", - "type": "object", - "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", - "type": "string" - }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" - }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "description": "TaskResult used to describe the results of a task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Sidecar. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "lifecycle": { + "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "name": { + "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string", + "default": "" + }, + "ports": { + "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ContainerPort" + }, + "x-kubernetes-list-map-keys": [ + "containerPort", + "protocol" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "containerPort", + "x-kubernetes-patch-strategy": "merge" + }, + "readinessProbe": { + "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Sidecar.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate is a template for a Step", + "type": "object", + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "description": "Step runs a subcomponent of a Task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "name": { + "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", + "type": "string", + "default": "" + }, + "onError": { + "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Params declares parameters passed to this step action.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "ref": { + "description": "Ref can be used to refer to a specific instance of a StepAction.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referenced step", + "type": "string" + } + } + }, + "results": { + "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", + "type": "array", + "items": { + "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "stderrConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "stdoutConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "timeout": { + "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is an optional human readable description of this volume.", + "type": "string" + }, + "mountPath": { + "description": "MountPath overrides the directory that the volume will be made available at.", + "type": "string" + }, + "name": { + "description": "Name is the name by which you can bind the volume at runtime.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + }, + "readOnly": { + "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "completionTime": { - "description": "CompletionTime is the time the PipelineRun completed.", - "$ref": "#/definitions/v1.Time" - }, - "conditions": { - "description": "Conditions the latest available observations of a resource's current state.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/knative.Condition" - }, - "x-kubernetes-patch-merge-key": "type", - "x-kubernetes-patch-strategy": "merge" - }, - "finallyStartTime": { - "description": "FinallyStartTime is when all non-finally tasks have been completed and only finally tasks are being executed.", - "$ref": "#/definitions/v1.Time" - }, - "observedGeneration": { - "description": "ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.", - "type": "integer", - "format": "int64" - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", - "type": "string" - }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", - "type": "object", - "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "results": { + "description": "Results are values that this pipeline can output once run", "type": "array", "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "description": "PipelineResult used to describe the results of a pipeline", "type": "object", + "required": [ + "name", + "value" + ], "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, "name": { - "description": "Name the specified combination", + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", "type": "string" }, "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { "description": "Param declares an ParamValues to use for the parameter called name.", @@ -16572,228 +26527,839 @@ "type": "string", "default": "" }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", "type": "object", "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" + "name" ], "properties": { - "ArrayVal": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", "type": "array", "items": { "type": "string", "default": "" - }, - "x-kubernetes-list-type": "atomic" + } }, - "ObjectVal": { + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", "type": "object", "additionalProperties": { - "type": "string", - "default": "" + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" } }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", "type": "string", "default": "" }, - "Type": { + "name": { + "description": "Name the given name", "type": "string", "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } } } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", - "type": "string" - }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", - "type": "object", - "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", "type": "array", "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", "type": "object", "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, "name": { - "description": "Name the specified combination", + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", "type": "string" }, "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { "description": "Param declares an ParamValues to use for the parameter called name.", @@ -16846,102 +27412,87 @@ } }, "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], "properties": { - "ArrayVal": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", "type": "array", "items": { - "type": "string", - "default": "" + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" }, - "Type": { - "type": "string", - "default": "" + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", "type": "array", "items": { "type": "string", @@ -16949,87 +27500,174 @@ }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", "type": "object", - "additionalProperties": { - "type": "string", - "default": "" + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } } }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, - "Type": { - "type": "string", - "default": "" + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ParamSpec" - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineResult" - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" }, "x-kubernetes-list-type": "atomic" }, @@ -17037,8 +27675,26 @@ "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } }, "x-kubernetes-list-type": "atomic" } @@ -17793,109 +28449,1232 @@ }, "x-kubernetes-list-type": "atomic" }, - "volumes": { - "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is an optional human readable description of this volume.", + "type": "string" + }, + "mountPath": { + "description": "MountPath overrides the directory that the volume will be made available at.", + "type": "string" + }, + "name": { + "description": "Name is the name by which you can bind the volume at runtime.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + }, + "readOnly": { + "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "description": "TaskResult used to describe the results of a task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Sidecar. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "lifecycle": { + "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "name": { + "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string", + "default": "" + }, + "ports": { + "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ContainerPort" + }, + "x-kubernetes-list-map-keys": [ + "containerPort", + "protocol" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "containerPort", + "x-kubernetes-patch-strategy": "merge" + }, + "readinessProbe": { + "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Sidecar.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate is a template for a Step", + "type": "object", + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "description": "Step runs a subcomponent of a Task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "name": { + "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", + "type": "string", + "default": "" + }, + "onError": { + "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Params declares parameters passed to this step action.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces are the volumes that this Task requires.", - "type": "array", - "items": { - "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "value": { + "description": "ResultValue is a type alias of ParamValue", "type": "object", "required": [ - "name" + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" ], "properties": { - "description": { - "description": "Description is an optional human readable description of this volume.", - "type": "string" + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" }, - "mountPath": { - "description": "MountPath overrides the directory that the volume will be made available at.", - "type": "string" + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } }, - "name": { - "description": "Name is the name by which you can bind the volume at runtime.", + "StringVal": { + "description": "Represents the stored type of ParamValues.", "type": "string", "default": "" }, - "optional": { - "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - }, - "readOnly": { - "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", - "type": "boolean" + "Type": { + "type": "string", + "default": "" } } - }, - "x-kubernetes-list-type": "atomic" + } } - } + }, + "x-kubernetes-list-type": "atomic" }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" + "ref": { + "description": "Ref can be used to refer to a specific instance of a StepAction.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referenced step", + "type": "string" + } + } }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", + "results": { + "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", "type": "array", "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", "type": "object", + "required": [ + "name" + ], "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "description": { + "description": "Description is a human-readable description of the result", "type": "string" }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" + "name": { + "description": "Name the given name", + "type": "string", + "default": "" }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" + "type": { + "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", + "type": "string" } } + }, + "x-kubernetes-list-type": "atomic" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "stderrConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "stdoutConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } } }, + "timeout": { + "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", "type": "array", "items": { - "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", "type": "object", "required": [ - "name" + "name", + "mountPath" ], "properties": { - "name": { - "description": "Name is the name of the workspace as declared by the task", + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", "type": "string", "default": "" }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is an optional human readable description of this volume.", + "type": "string" + }, + "mountPath": { + "description": "MountPath overrides the directory that the volume will be made available at.", + "type": "string" + }, + "name": { + "description": "Name is the name by which you can bind the volume at runtime.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + }, + "readOnly": { + "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" }, - "workspace": { - "description": "Workspace is the name of the workspace declared by the pipeline", - "type": "string" + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } } } }, @@ -17906,16 +29685,21 @@ "x-kubernetes-list-type": "atomic" }, "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", "type": "array", "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "description": "Param declares an ParamValues to use for the parameter called name.", "type": "object", "required": [ - "name" + "name", + "value" ], "properties": { - "default": { + "name": { + "type": "string", + "default": "" + }, + "value": { "description": "ResultValue is a type alias of ParamValue", "type": "object", "required": [ @@ -17950,107 +29734,104 @@ "default": "" } } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { "type": "array", "items": { "type": "string", "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" + }, + "x-kubernetes-list-type": "atomic" }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "ObjectVal": { "type": "object", "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" + "type": "string", + "default": "" } }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "description": "PipelineResult used to describe the results of a pipeline", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", + "StringVal": { + "description": "Represents the stored type of ParamValues.", "type": "string", "default": "" }, - "name": { - "description": "Name the given name", + "Type": { "type": "string", "default": "" - }, - "type": { - "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", - "type": "string" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } } } - }, - "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", "type": "array", "items": { "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", @@ -18126,391 +29907,33 @@ }, "Type": { "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ParamSpec" - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineResult" - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "taskRef": { - "description": "TaskRef can be used to refer to a specific instance of a task.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", - "type": "string" - }, - "kind": { - "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "taskSpec": { - "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "description": { - "description": "Description is a user-facing description of the task that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "params": { - "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" + "default": "" + } + } } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" + }, + "x-kubernetes-list-type": "atomic" } } }, "x-kubernetes-list-type": "atomic" }, - "results": { - "description": "Results are values that this Task can output", + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", "type": "array", "items": { - "description": "TaskResult used to describe the results of a task", + "description": "Param declares an ParamValues to use for the parameter called name.", "type": "object", "required": [ - "name" + "name", + "value" ], "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" - }, "name": { - "description": "Name the given name", "type": "string", "default": "" }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", - "type": "string" - }, "value": { "description": "ResultValue is a type alias of ParamValue", "type": "object", @@ -18550,19 +29973,43 @@ } }, "x-kubernetes-list-type": "atomic" - }, - "sidecars": { - "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", - "type": "array", - "items": { - "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", "type": "object", "required": [ - "name" + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" ], "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "ArrayVal": { "type": "array", "items": { "type": "string", @@ -18570,331 +30017,210 @@ }, "x-kubernetes-list-type": "atomic" }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { + "ObjectVal": { + "type": "object", + "additionalProperties": { "type": "string", "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Sidecar. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "lifecycle": { - "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", - "$ref": "#/definitions/v1.Lifecycle" - }, - "livenessProbe": { - "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "name": { - "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", - "type": "string", - "default": "" - }, - "ports": { - "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ContainerPort" - }, - "x-kubernetes-list-map-keys": [ - "containerPort", - "protocol" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "containerPort", - "x-kubernetes-patch-strategy": "merge" - }, - "readinessProbe": { - "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "startupProbe": { - "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "stdin": { - "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", - "type": "boolean" - }, - "stdinOnce": { - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", - "type": "boolean" - }, - "terminationMessagePath": { - "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", - "type": "string" - }, - "terminationMessagePolicy": { - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", - "type": "string" - }, - "tty": { - "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", - "type": "boolean" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Sidecar.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" + } }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "spec": { - "description": "Spec is a specification of a custom task", - "default": {}, - "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" - }, - "stepTemplate": { - "description": "StepTemplate is a template for a Step", - "type": "object", - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { + "StringVal": { + "description": "Represents the stored type of ParamValues.", "type": "string", "default": "" }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { + "Type": { "type": "string", "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" + } } } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" }, - "steps": { - "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", "type": "array", "items": { - "description": "Step runs a subcomponent of a Task", + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", "type": "object", - "required": [ - "name" - ], "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", "type": "string" }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", "type": "string" }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, "name": { - "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", - "type": "string", - "default": "" + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" }, "onError": { - "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", "type": "string" }, "params": { - "description": "Params declares parameters passed to this step action.", + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { "description": "Param declares an ParamValues to use for the parameter called name.", @@ -18948,129 +30274,255 @@ }, "x-kubernetes-list-type": "atomic" }, - "ref": { - "description": "Ref can be used to refer to a specific instance of a StepAction.", + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, "name": { - "description": "Name of the referenced step", + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } } }, - "results": { - "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", "type": "array", "items": { - "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", - "type": "string" - } - } + "type": "string", + "default": "" }, "x-kubernetes-list-type": "atomic" }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "stderrConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", "type": "object", "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" } } }, - "stdoutConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", "type": "object", "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } } }, "timeout": { - "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", "$ref": "#/definitions/v1.Duration" }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } }, "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", "type": "object", "required": [ - "name", - "mountPath" + "name" ], "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "description": "Name is the name of the workspace as declared by the task", "type": "string", "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" } } }, @@ -19080,660 +30532,653 @@ }, "x-kubernetes-list-type": "atomic" }, - "volumes": { - "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces are the volumes that this Task requires.", + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", "type": "array", "items": { - "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", "type": "object", "required": [ "name" ], "properties": { - "description": { - "description": "Description is an optional human readable description of this volume.", - "type": "string" - }, - "mountPath": { - "description": "MountPath overrides the directory that the volume will be made available at.", - "type": "string" - }, - "name": { - "description": "Name is the name by which you can bind the volume at runtime.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - }, - "readOnly": { - "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", - "type": "object", - "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", - "type": "string" - }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" - }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" - }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - } - } - } - }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", - "type": "array", - "items": { - "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name is the name of the workspace as declared by the task", - "type": "string", - "default": "" - }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" - }, - "workspace": { - "description": "Workspace is the name of the workspace declared by the pipeline", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", - "type": "string" - }, - "name": { - "description": "Name is the name of a workspace to be provided by a PipelineRun.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "taskRef": { - "description": "TaskRef can be used to refer to a specific instance of a task.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", - "type": "string" - }, - "kind": { - "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "taskSpec": { - "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "description": { - "description": "Description is a user-facing description of the task that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "params": { - "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this Task can output", - "type": "array", - "items": { - "description": "TaskResult used to describe the results of a task", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", - "type": "string" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", "type": "array", "items": { - "type": "string", - "default": "" + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "sidecars": { - "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", - "type": "array", - "items": { - "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Sidecar. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "lifecycle": { - "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", - "$ref": "#/definitions/v1.Lifecycle" - }, - "livenessProbe": { - "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "name": { - "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", - "type": "string", - "default": "" - }, - "ports": { - "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ContainerPort" - }, - "x-kubernetes-list-map-keys": [ - "containerPort", - "protocol" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "containerPort", - "x-kubernetes-patch-strategy": "merge" - }, - "readinessProbe": { - "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "startupProbe": { - "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "stdin": { - "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", - "type": "boolean" - }, - "stdinOnce": { - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", - "type": "boolean" - }, - "terminationMessagePath": { - "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", - "type": "string" - }, - "terminationMessagePolicy": { - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", - "type": "string" - }, - "tty": { - "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", - "type": "boolean" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Sidecar.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } + }, + "x-kubernetes-list-type": "atomic" } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "spec": { - "description": "Spec is a specification of a custom task", - "default": {}, - "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" - }, - "stepTemplate": { - "description": "StepTemplate is a template for a Step", - "type": "object", - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" + } }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - } - } - }, - "steps": { - "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", - "type": "array", - "items": { - "description": "Step runs a subcomponent of a Task", - "type": "object", - "required": [ - "name" - ], - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", "type": "array", "items": { "type": "string", @@ -19741,74 +31186,505 @@ }, "x-kubernetes-list-type": "atomic" }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "name": { - "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", - "type": "string", - "default": "" - }, - "onError": { - "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", - "type": "string" + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } }, - "params": { - "description": "Params declares parameters passed to this step action.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", + "type": "object", + "properties": { + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + } + } + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "description": "TaskResult used to describe the results of a task", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Sidecar. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "lifecycle": { + "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "name": { + "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string", + "default": "" + }, + "ports": { + "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ContainerPort" + }, + "x-kubernetes-list-map-keys": [ + "containerPort", + "protocol" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "containerPort", + "x-kubernetes-patch-strategy": "merge" + }, + "readinessProbe": { + "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Sidecar.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate is a template for a Step", + "type": "object", + "properties": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "description": "Step runs a subcomponent of a Task", "type": "object", "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" + "name" ], "properties": { - "ArrayVal": { + "args": { + "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", "type": "array", "items": { "type": "string", @@ -19816,496 +31692,338 @@ }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } + "computeResources": { + "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "default": {}, + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "env": { + "description": "List of environment variables to set in the Step. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvVar" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "name", + "x-kubernetes-patch-strategy": "merge" + }, + "envFrom": { + "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.EnvFromSource" + }, + "x-kubernetes-list-type": "atomic" + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "name": { + "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", + "type": "string", + "default": "" + }, + "onError": { + "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Params declares parameters passed to this step action.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "ref": { + "description": "Ref can be used to refer to a specific instance of a StepAction.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referenced step", + "type": "string" + } + } + }, + "results": { + "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", + "type": "array", + "items": { + "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs results.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "script": { + "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "stderrConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "stdoutConfig": { + "description": "StepOutputConfig stores configuration for a step output stream.", + "type": "object", + "properties": { + "path": { + "description": "Path to duplicate stdout stream to on container's local filesystem.", + "type": "string" + } + } + }, + "timeout": { + "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the Step.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeDevice" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "devicePath", + "x-kubernetes-patch-strategy": "merge" + }, + "volumeMounts": { + "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.VolumeMount" + }, + "x-kubernetes-list-type": "atomic", + "x-kubernetes-patch-merge-key": "mountPath", + "x-kubernetes-patch-strategy": "merge" + }, + "workingDir": { + "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + }, + "workspaces": { + "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "type": "array", + "items": { + "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "type": "object", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", + "type": "string", + "default": "" + }, + "name": { + "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "type": "string", + "default": "" + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is an optional human readable description of this volume.", + "type": "string" + }, + "mountPath": { + "description": "MountPath overrides the directory that the volume will be made available at.", + "type": "string" }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", + "name": { + "description": "Name is the name by which you can bind the volume at runtime.", "type": "string", "default": "" }, - "Type": { - "type": "string", - "default": "" + "optional": { + "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + }, + "readOnly": { + "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", + "type": "boolean" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "ref": { - "description": "Ref can be used to refer to a specific instance of a StepAction.", - "type": "object", - "properties": { - "name": { - "description": "Name of the referenced step", - "type": "string" + }, + "x-kubernetes-list-type": "atomic" } } }, - "results": { - "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", "type": "object", - "required": [ - "name" - ], "properties": { - "description": { - "description": "Description is a human-readable description of the result", + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", "type": "string" }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" }, - "type": { - "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", + "operator": { + "description": "Operator that represents an Input's relationship to the values", "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" } } - }, - "x-kubernetes-list-type": "atomic" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "stderrConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", - "type": "object", - "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", - "type": "string" - } - } - }, - "stdoutConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", - "type": "object", - "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", - "type": "string" - } } }, - "timeout": { - "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" - }, "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "volumes": { - "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces are the volumes that this Task requires.", - "type": "array", - "items": { - "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is an optional human readable description of this volume.", - "type": "string" - }, - "mountPath": { - "description": "MountPath overrides the directory that the volume will be made available at.", - "type": "string" - }, - "name": { - "description": "Name is the name by which you can bind the volume at runtime.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - }, - "readOnly": { - "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", - "type": "object", - "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", - "type": "string" - }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" - }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" - }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - } - } - } - }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", - "type": "array", - "items": { - "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name is the name of the workspace as declared by the task", - "type": "string", - "default": "" - }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" - }, - "workspace": { - "description": "Workspace is the name of the workspace declared by the pipeline", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "description": "PipelineResult used to describe the results of a pipeline", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string", - "default": "" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "type": { - "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", - "type": "string" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", - "type": "string" - }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", - "type": "object", - "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", - "type": "array", - "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", - "type": "object", - "properties": { - "name": { - "description": "Name the specified combination", - "type": "string" - }, - "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", "type": "object", "required": [ - "name", - "value" + "name" ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" } } }, @@ -20316,21 +32034,16 @@ "x-kubernetes-list-type": "atomic" }, "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", "type": "array", "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", "type": "object", "required": [ - "name", - "value" + "name" ], "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { + "default": { "description": "ResultValue is a type alias of ParamValue", "type": "object", "required": [ @@ -20365,564 +32078,209 @@ "default": "" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", "type": "array", "items": { "type": "string", "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" } }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", + "name": { + "description": "Name declares the name by which a parameter is referenced.", "type": "string", "default": "" }, - "Type": { - "type": "string", - "default": "" + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" + }, + "x-kubernetes-list-type": "atomic" }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "results": { + "description": "Results are values that this pipeline can output once run", "type": "array", "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "description": "PipelineResult used to describe the results of a pipeline", "type": "object", + "required": [ + "name", + "value" + ], "properties": { "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", - "type": "string" + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", "type": "string" }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", + "value": { + "description": "ResultValue is a type alias of ParamValue", "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "ArrayVal": { "type": "array", "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", - "type": "object", - "properties": { - "name": { - "description": "Name the specified combination", - "type": "string" - }, - "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } + "type": "string", + "default": "" }, "x-kubernetes-list-type": "atomic" }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { + "ObjectVal": { + "type": "object", + "additionalProperties": { "type": "string", "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ParamSpec" - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineResult" - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "retries": { - "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", - "type": "integer", - "format": "int32" - }, - "runAfter": { - "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "taskRef": { - "description": "TaskRef can be used to refer to a specific instance of a task.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", - "type": "string" }, - "kind": { - "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", - "type": "string" + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" + "Type": { + "type": "string", + "default": "" } } - }, - "taskSpec": { - "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", - "type": "object", - "properties": { - "apiVersion": { - "type": "string" - }, - "description": { - "description": "Description is a user-facing description of the task that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", - "type": "string" - }, - "kind": { - "type": "string" - }, - "metadata": { - "description": "PipelineTaskMetadata contains the labels or annotations for an EmbeddedTask", - "type": "object", - "properties": { - "annotations": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "params": { - "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", "type": "array", "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", "type": "object", - "required": [ - "name" - ], "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { "type": "string", "default": "" }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" + }, + "x-kubernetes-list-type": "atomic" } } }, "x-kubernetes-list-type": "atomic" }, - "results": { - "description": "Results are values that this Task can output", + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", "type": "array", "items": { - "description": "TaskResult used to describe the results of a task", + "description": "Param declares an ParamValues to use for the parameter called name.", "type": "object", "required": [ - "name" + "name", + "value" ], "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" - }, "name": { - "description": "Name the given name", "type": "string", "default": "" }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the result. The possible type is currently \"string\" and will support \"array\" in following work.", - "type": "string" - }, "value": { "description": "ResultValue is a type alias of ParamValue", "type": "object", @@ -20962,19 +32320,43 @@ } }, "x-kubernetes-list-type": "atomic" - }, - "sidecars": { - "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", - "type": "array", - "items": { - "description": "Sidecar has nearly the same data structure as Step but does not have the ability to timeout.", + } + } + }, + "name": { + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", + "type": "string" + }, + "params": { + "description": "Parameters declares parameters passed to this task.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", "type": "object", "required": [ - "name" + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" ], "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "ArrayVal": { "type": "array", "items": { "type": "string", @@ -20982,331 +32364,210 @@ }, "x-kubernetes-list-type": "atomic" }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Sidecar's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { + "ObjectVal": { + "type": "object", + "additionalProperties": { "type": "string", "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Sidecar. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Sidecar. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Sidecar. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "lifecycle": { - "description": "Actions that the management system should take in response to Sidecar lifecycle events. Cannot be updated.", - "$ref": "#/definitions/v1.Lifecycle" - }, - "livenessProbe": { - "description": "Periodic probe of Sidecar liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "name": { - "description": "Name of the Sidecar specified as a DNS_LABEL. Each Sidecar in a Task must have a unique name (DNS_LABEL). Cannot be updated.", - "type": "string", - "default": "" - }, - "ports": { - "description": "List of ports to expose from the Sidecar. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ContainerPort" - }, - "x-kubernetes-list-map-keys": [ - "containerPort", - "protocol" - ], - "x-kubernetes-list-type": "map", - "x-kubernetes-patch-merge-key": "containerPort", - "x-kubernetes-patch-strategy": "merge" - }, - "readinessProbe": { - "description": "Periodic probe of Sidecar service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command or Args.", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Sidecar should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "startupProbe": { - "description": "StartupProbe indicates that the Pod the Sidecar is running in has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", - "$ref": "#/definitions/v1.Probe" - }, - "stdin": { - "description": "Whether this Sidecar should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the Sidecar will always result in EOF. Default is false.", - "type": "boolean" - }, - "stdinOnce": { - "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on Sidecar start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the Sidecar is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", - "type": "boolean" - }, - "terminationMessagePath": { - "description": "Optional: Path at which the file to which the Sidecar's termination message will be written is mounted into the Sidecar's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", - "type": "string" - }, - "terminationMessagePolicy": { - "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the Sidecar status message on both success and failure. FallbackToLogsOnError will use the last chunk of Sidecar log output if the termination message file is empty and the Sidecar exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", - "type": "string" - }, - "tty": { - "description": "Whether this Sidecar should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", - "type": "boolean" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Sidecar.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Sidecar's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Sidecar's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" + } }, - "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Sidecar wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", - "type": "array", - "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", - "type": "object", - "required": [ - "name", - "mountPath" - ], - "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, - "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", - "type": "string", - "default": "" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "spec": { - "description": "Spec is a specification of a custom task", - "default": {}, - "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" - }, - "stepTemplate": { - "description": "StepTemplate is a template for a Step", - "type": "object", - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { + "StringVal": { + "description": "Represents the stored type of ParamValues.", "type": "string", "default": "" }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the Step's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { + "Type": { "type": "string", "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Image reference name. More info: https://kubernetes.io/docs/concepts/containers/images", - "type": "string" - }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", - "type": "string" - }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" - }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" + } } } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", + "type": "object", + "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" }, - "steps": { - "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", - "type": "array", - "items": { - "description": "Step runs a subcomponent of a Task", - "type": "object", - "required": [ - "name" - ], - "properties": { - "args": { - "description": "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "command": { - "description": "Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "computeResources": { - "description": "ComputeResources required by this Step. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", - "default": {}, - "$ref": "#/definitions/v1.ResourceRequirements" - }, - "env": { - "description": "List of environment variables to set in the Step. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvVar" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "name", - "x-kubernetes-patch-strategy": "merge" - }, - "envFrom": { - "description": "List of sources to populate environment variables in the Step. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the Step is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.EnvFromSource" - }, - "x-kubernetes-list-type": "atomic" - }, - "image": { - "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", + "type": "object", + "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", "type": "string" }, - "imagePullPolicy": { - "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", "type": "string" }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, "name": { - "description": "Name of the Step specified as a DNS_LABEL. Each Step in a Task must have a unique name.", - "type": "string", - "default": "" + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" }, "onError": { - "description": "OnError defines the exiting behavior of a container on error can be set to [ continue | stopAndFail ]", + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", "type": "string" }, "params": { - "description": "Params declares parameters passed to this step action.", + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { "description": "Param declares an ParamValues to use for the parameter called name.", @@ -21360,129 +32621,255 @@ }, "x-kubernetes-list-type": "atomic" }, - "ref": { - "description": "Ref can be used to refer to a specific instance of a StepAction.", + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", "properties": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, "name": { - "description": "Name of the referenced step", + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" } } }, - "results": { - "description": "Results declares StepResults produced by the Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.\n\nIt can be used in an inlined Step when used to store Results to $(step.results.resultName.path). It cannot be used when referencing StepActions using [v1.Step.Ref]. The Results declared by the StepActions will be stored here instead.", - "type": "array", - "items": { - "description": "StepResult used to describe the Results of a Step.\n\nThis is field is at an ALPHA stability level and gated by \"enable-step-actions\" feature flag.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string" + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs results.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" }, - "type": { - "description": "The possible types are 'string', 'array', and 'object', with 'string' as the default.", - "type": "string" - } + "x-kubernetes-list-type": "atomic" + }, + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } - }, - "x-kubernetes-list-type": "atomic" + } }, - "script": { - "description": "Script is the contents of an executable file to execute.\n\nIf Script is not empty, the Step cannot have an Command and the Args will be passed to the Script.", - "type": "string" + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" }, - "securityContext": { - "description": "SecurityContext defines the security options the Step should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", - "$ref": "#/definitions/v1.SecurityContext" + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" }, - "stderrConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", "type": "object", "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" } } }, - "stdoutConfig": { - "description": "StepOutputConfig stores configuration for a step output stream.", + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", "type": "object", "properties": { - "path": { - "description": "Path to duplicate stdout stream to on container's local filesystem.", + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } } }, "timeout": { - "description": "Timeout is the time after which the step times out. Defaults to never. Refer to Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", "$ref": "#/definitions/v1.Duration" }, - "volumeDevices": { - "description": "volumeDevices is the list of block devices to be used by the Step.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeDevice" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "devicePath", - "x-kubernetes-patch-strategy": "merge" - }, - "volumeMounts": { - "description": "Volumes to mount into the Step's filesystem. Cannot be updated.", + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.VolumeMount" - }, - "x-kubernetes-list-type": "atomic", - "x-kubernetes-patch-merge-key": "mountPath", - "x-kubernetes-patch-strategy": "merge" - }, - "workingDir": { - "description": "Step's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "type": "string" + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } }, "workspaces": { - "description": "This is an alpha field. You must set the \"enable-api-fields\" feature flag to \"alpha\" for this field to be supported.\n\nWorkspaces is a list of workspaces from the Task that this Step wants exclusive access to. Adding a workspace to this list means that any other Step or Sidecar that does not also request this Workspace will not have access to it.", + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", "type": "array", "items": { - "description": "WorkspaceUsage is used by a Step or Sidecar to declare that it wants isolated access to a Workspace defined in a Task.", + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", "type": "object", "required": [ - "name", - "mountPath" + "name" ], "properties": { - "mountPath": { - "description": "MountPath is the path that the workspace should be mounted to inside the Step or Sidecar, overriding any MountPath specified in the Task's WorkspaceDeclaration.", - "type": "string", - "default": "" - }, "name": { - "description": "Name is the name of the workspace this Step or Sidecar wants access to.", + "description": "Name is the name of the workspace as declared by the task", "type": "string", "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" } } }, @@ -21492,294 +32879,306 @@ }, "x-kubernetes-list-type": "atomic" }, - "volumes": { - "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.Volume" - }, - "x-kubernetes-list-type": "atomic" - }, - "workspaces": { - "description": "Workspaces are the volumes that this Task requires.", + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", "type": "array", "items": { - "description": "WorkspaceDeclaration is a declaration of a volume that a Task requires.", + "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", "type": "object", "required": [ "name" ], "properties": { - "description": { - "description": "Description is an optional human readable description of this volume.", - "type": "string" - }, - "mountPath": { - "description": "MountPath overrides the directory that the volume will be made available at.", - "type": "string" - }, - "name": { - "description": "Name is the name by which you can bind the volume at runtime.", - "type": "string", - "default": "" - }, - "optional": { - "description": "Optional marks a Workspace as not being required in TaskRuns. By default this field is false and so declared workspaces are required.", - "type": "boolean" - }, - "readOnly": { - "description": "ReadOnly dictates whether a mounted volume is writable. By default this field is false and so mounted volumes are writable.", - "type": "boolean" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "timeout": { - "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", - "$ref": "#/definitions/v1.Duration" - }, - "when": { - "description": "When is a list of when expressions that need to be true for the task to run", - "type": "array", - "items": { - "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", - "type": "object", - "properties": { - "cel": { - "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", - "type": "string" - }, - "input": { - "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", - "type": "string" - }, - "operator": { - "description": "Operator that represents an Input's relationship to the values", - "type": "string" - }, - "values": { - "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - } - } - } - }, - "workspaces": { - "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", - "type": "array", - "items": { - "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "description": "Name is the name of the workspace as declared by the task", - "type": "string", - "default": "" - }, - "subPath": { - "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", - "type": "string" - }, - "workspace": { - "description": "Workspace is the name of the workspace declared by the pipeline", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as resources). Parameter values are provided by users as inputs on a TaskRun or PipelineRun.", - "type": "object", - "required": [ - "name" - ], - "properties": { - "default": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" - }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - }, - "description": { - "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", - "type": "string" - }, - "enum": { - "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", - "type": "array", - "items": { - "type": "string", - "default": "" - } - }, - "name": { - "description": "Name declares the name by which a parameter is referenced.", - "type": "string", - "default": "" - }, - "properties": { - "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", - "type": "object", - "additionalProperties": { - "default": {}, - "$ref": "#/definitions/v1.PropertySpec" - } - }, - "type": { - "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", - "type": "string" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "description": "PipelineResult used to describe the results of a pipeline", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "description": { - "description": "Description is a human-readable description of the result", - "type": "string", - "default": "" - }, - "name": { - "description": "Name the given name", - "type": "string", - "default": "" - }, - "type": { - "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", - "type": "string" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { + "default": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + }, + "description": { + "description": "Description is a user-facing description of the parameter that may be used to populate a UI.", + "type": "string" + }, + "enum": { + "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated. If Enum is not set, no input validation is performed for the param.", + "type": "array", + "items": { + "type": "string", + "default": "" + } + }, + "name": { + "description": "Name declares the name by which a parameter is referenced.", + "type": "string", + "default": "" + }, + "properties": { + "description": "Properties is the JSON Schema properties to support key-value pairs parameter.", + "type": "object", + "additionalProperties": { + "default": {}, + "$ref": "#/definitions/v1.PropertySpec" + } + }, + "type": { + "description": "Type is the user-specified type of the parameter. The possible types are currently \"string\", \"array\" and \"object\", and \"string\" is the default.", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this pipeline can output once run", "type": "array", "items": { - "type": "string", - "default": "" + "description": "PipelineResult used to describe the results of a pipeline", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "description": { + "description": "Description is a human-readable description of the result", + "type": "string", + "default": "" + }, + "name": { + "description": "Name the given name", + "type": "string", + "default": "" + }, + "type": { + "description": "Type is the user-specified type of the result. The possible types are 'string', 'array', and 'object', with 'string' as the default. 'array' and 'object' types are alpha features.", + "type": "string" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" - }, - "Type": { - "type": "string", - "default": "" - } - } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", - "type": "object", - "properties": { - "description": { - "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", - "type": "string" - }, - "matrix": { - "description": "Matrix is used to fan out Tasks in a Pipeline", - "type": "object", - "properties": { - "include": { - "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", "type": "array", "items": { - "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "description": "PipelineTask defines a task in a Pipeline, passing inputs from both Params and from the output of previous tasks.", "type": "object", "properties": { + "description": { + "description": "Description is the description of this task within the context of a Pipeline. This description may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is the display name of this task within the context of a Pipeline. This display name may be used to populate a UI.", + "type": "string" + }, + "matrix": { + "description": "Matrix is used to fan out Tasks in a Pipeline", + "type": "object", + "properties": { + "include": { + "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.", + "type": "array", + "items": { + "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.", + "type": "object", + "properties": { + "name": { + "description": "Name the specified combination", + "type": "string" + }, + "params": { + "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, + "x-kubernetes-list-type": "atomic" + }, + "params": { + "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", + "type": "array", + "items": { + "description": "Param declares an ParamValues to use for the parameter called name.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string", + "default": "" + }, + "value": { + "description": "ResultValue is a type alias of ParamValue", + "type": "object", + "required": [ + "Type", + "StringVal", + "ArrayVal", + "ObjectVal" + ], + "properties": { + "ArrayVal": { + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + }, + "ObjectVal": { + "type": "object", + "additionalProperties": { + "type": "string", + "default": "" + } + }, + "StringVal": { + "description": "Represents the stored type of ParamValues.", + "type": "string", + "default": "" + }, + "Type": { + "type": "string", + "default": "" + } + } + } + } + }, + "x-kubernetes-list-type": "atomic" + } + } + }, "name": { - "description": "Name the specified combination", + "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", + "type": "string" + }, + "onError": { + "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", "type": "string" }, "params": { - "description": "Params takes only `Parameters` of type `\"string\"` The names of the `params` must match the names of the `params` in the underlying `Task`", + "description": "Parameters declares parameters passed to this task.", "type": "array", "items": { "description": "Param declares an ParamValues to use for the parameter called name.", @@ -21832,102 +33231,87 @@ } }, "x-kubernetes-list-type": "atomic" - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params is a list of parameters used to fan out the pipelineTask Params takes only `Parameters` of type `\"array\"` Each array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`. The names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" }, - "value": { - "description": "ResultValue is a type alias of ParamValue", + "pipelineRef": { + "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], "properties": { - "ArrayVal": { + "apiVersion": { + "description": "API version of the referent", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } + } + }, + "pipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline.", + "type": "object", + "properties": { + "description": { + "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", + "type": "string" + }, + "finally": { + "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", "type": "array", "items": { - "type": "string", - "default": "" + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } + "params": { + "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "results": { + "description": "Results are values that this pipeline can output once run", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineResult" + }, + "x-kubernetes-list-type": "atomic" }, - "Type": { - "type": "string", - "default": "" + "tasks": { + "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTask" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - } - } - }, - "name": { - "description": "Name is the name of this task within the context of a Pipeline. Name is used as a coordinate with the `from` and `runAfter` fields to establish the execution order of tasks relative to one another.", - "type": "string" - }, - "onError": { - "description": "OnError defines the exiting behavior of a PipelineRun on error can be set to [ continue | stopAndFail ]", - "type": "string" - }, - "params": { - "description": "Parameters declares parameters passed to this task.", - "type": "array", - "items": { - "description": "Param declares an ParamValues to use for the parameter called name.", - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "value": { - "description": "ResultValue is a type alias of ParamValue", - "type": "object", - "required": [ - "Type", - "StringVal", - "ArrayVal", - "ObjectVal" - ], - "properties": { - "ArrayVal": { + }, + "retries": { + "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False", + "type": "integer", + "format": "int32" + }, + "runAfter": { + "description": "RunAfter is the list of PipelineTask names that should be executed before this Task executes. (Used to force a specific ordering in graph execution.)", "type": "array", "items": { "type": "string", @@ -21935,87 +33319,174 @@ }, "x-kubernetes-list-type": "atomic" }, - "ObjectVal": { + "taskRef": { + "description": "TaskRef can be used to refer to a specific instance of a task.", "type": "object", - "additionalProperties": { - "type": "string", - "default": "" + "properties": { + "apiVersion": { + "description": "API version of the referent Note: A Task with non-empty APIVersion and Kind is considered a Custom Task", + "type": "string" + }, + "kind": { + "description": "TaskKind indicates the Kind of the Task: 1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\". 2. Custom Task when Kind is non-empty and APIVersion is non-empty", + "type": "string" + }, + "name": { + "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + } } }, - "StringVal": { - "description": "Represents the stored type of ParamValues.", - "type": "string", - "default": "" + "taskSpec": { + "description": "EmbeddedTask is used to define a Task inline within a Pipeline's PipelineTasks.", + "type": "object", + "properties": { + "apiVersion": { + "type": "string" + }, + "description": { + "description": "Description is a user-facing description of the task that may be used to populate a UI.", + "type": "string" + }, + "displayName": { + "description": "DisplayName is a user-facing name of the task that may be used to populate a UI.", + "type": "string" + }, + "kind": { + "type": "string" + }, + "metadata": { + "default": {}, + "$ref": "#/definitions/v1.PipelineTaskMetadata" + }, + "params": { + "description": "Params is a list of input parameters required to run the task. Params must be supplied as inputs in TaskRuns unless they declare a default value.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.ParamSpec" + }, + "x-kubernetes-list-type": "atomic" + }, + "results": { + "description": "Results are values that this Task can output", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.TaskResult" + }, + "x-kubernetes-list-type": "atomic" + }, + "sidecars": { + "description": "Sidecars are run alongside the Task's step containers. They begin before the steps start and end after the steps complete.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Sidecar" + }, + "x-kubernetes-list-type": "atomic" + }, + "spec": { + "description": "Spec is a specification of a custom task", + "default": {}, + "$ref": "#/definitions/k8s.io.apimachinery.pkg.runtime.RawExtension" + }, + "stepTemplate": { + "description": "StepTemplate can be used as the basis for all step containers within the Task, so that the steps inherit settings on the base container.", + "$ref": "#/definitions/v1.StepTemplate" + }, + "steps": { + "description": "Steps are the steps of the build; each step is run sequentially with the source mounted into /workspace.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Step" + }, + "x-kubernetes-list-type": "atomic" + }, + "volumes": { + "description": "Volumes is a collection of volumes that are available to mount into the steps of the build.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.Volume" + }, + "x-kubernetes-list-type": "atomic" + }, + "workspaces": { + "description": "Workspaces are the volumes that this Task requires.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/v1.WorkspaceDeclaration" + }, + "x-kubernetes-list-type": "atomic" + } + } }, - "Type": { - "type": "string", - "default": "" + "timeout": { + "description": "Time after which the TaskRun times out. Defaults to 1 hour. Refer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration", + "$ref": "#/definitions/v1.Duration" + }, + "when": { + "description": "When is a list of when expressions that need to be true for the task to run", + "type": "array", + "items": { + "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run to determine whether the Task should be executed or skipped", + "type": "object", + "properties": { + "cel": { + "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute the task based on the result of the expression evaluation More info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md", + "type": "string" + }, + "input": { + "description": "Input is the string for guard checking which can be a static input or an output from a parent Task", + "type": "string" + }, + "operator": { + "description": "Operator that represents an Input's relationship to the values", + "type": "string" + }, + "values": { + "description": "Values is an array of strings, which is compared against the input, for guard checking It must be non-empty", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + } + } + }, + "workspaces": { + "description": "Workspaces maps workspaces from the pipeline spec to the workspaces declared in the Task.", + "type": "array", + "items": { + "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be mapped to a task's declared workspace.", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name is the name of the workspace as declared by the task", + "type": "string", + "default": "" + }, + "subPath": { + "description": "SubPath is optionally a directory on the volume which should be used for this binding (i.e. the volume will be mounted at this sub directory).", + "type": "string" + }, + "workspace": { + "description": "Workspace is the name of the workspace declared by the pipeline", + "type": "string" + } + } + }, + "x-kubernetes-list-type": "atomic" } } - } - } - }, - "x-kubernetes-list-type": "atomic" - }, - "pipelineRef": { - "description": "PipelineRef can be used to refer to a specific instance of a Pipeline.", - "type": "object", - "properties": { - "apiVersion": { - "description": "API version of the referent", - "type": "string" - }, - "name": { - "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - } - } - }, - "pipelineSpec": { - "description": "PipelineSpec defines the desired state of Pipeline.", - "type": "object", - "properties": { - "description": { - "description": "Description is a user-facing description of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "displayName": { - "description": "DisplayName is a user-facing name of the pipeline that may be used to populate a UI.", - "type": "string" - }, - "finally": { - "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline i.e. either after all Tasks are finished executing successfully or after a failure which would result in ending the Pipeline", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" - }, - "x-kubernetes-list-type": "atomic" - }, - "params": { - "description": "Params declares a list of input parameters that must be supplied when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.ParamSpec" - }, - "x-kubernetes-list-type": "atomic" - }, - "results": { - "description": "Results are values that this pipeline can output once run", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineResult" - }, - "x-kubernetes-list-type": "atomic" - }, - "tasks": { - "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.", - "type": "array", - "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineTask" }, "x-kubernetes-list-type": "atomic" }, @@ -22023,8 +33494,26 @@ "description": "Workspaces declares a set of named workspaces that are expected to be provided by a PipelineRun.", "type": "array", "items": { - "default": {}, - "$ref": "#/definitions/v1.PipelineWorkspaceDeclaration" + "description": "WorkspacePipelineDeclaration creates a named slot in a Pipeline that a PipelineRun is expected to populate with a workspace binding.\n\nDeprecated: use PipelineWorkspaceDeclaration type instead", + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "description": "Description is a human readable string describing how the workspace will be used in the Pipeline. It can be useful to include a bit of detail about which tasks are intended to have access to the data on the workspace.", + "type": "string" + }, + "name": { + "description": "Name is the name of a workspace to be provided by a PipelineRun.", + "type": "string", + "default": "" + }, + "optional": { + "description": "Optional marks a Workspace as not being required in PipelineRuns. By default this field is false and so declared workspaces are required.", + "type": "boolean" + } + } }, "x-kubernetes-list-type": "atomic" } @@ -23977,7 +35466,8 @@ "kind": "PipelineRun", "version": "v1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -24890,7 +36380,8 @@ "kind": "Task", "version": "v1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -30548,7 +42039,8 @@ "kind": "TaskRun", "version": "v1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -30905,7 +42397,8 @@ "kind": "StepAction", "version": "v1alpha1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -31067,7 +42560,8 @@ "kind": "VerificationPolicy", "version": "v1alpha1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -31158,7 +42652,8 @@ "kind": "ClusterTask", "version": "v1beta1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -31460,7 +42955,8 @@ "kind": "CustomRun", "version": "v1beta1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -31738,7 +43234,8 @@ "kind": "ResolutionRequest", "version": "v1beta1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -31933,7 +43430,8 @@ "kind": "ClusterInterceptor", "version": "v1alpha1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -32035,7 +43533,8 @@ "kind": "Interceptor", "version": "v1alpha1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -32137,7 +43636,8 @@ "kind": "ClusterTriggerBinding", "version": "v1beta1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -32253,7 +43753,8 @@ "kind": "EventListener", "version": "v1beta1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -32450,7 +43951,8 @@ "kind": "Trigger", "version": "v1beta1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -32566,7 +44068,8 @@ "kind": "TriggerBinding", "version": "v1beta1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { @@ -32682,7 +44185,8 @@ "kind": "TriggerTemplate", "version": "v1beta1" } - ] + ], + "x-kubernetes-preserve-unknown-fields": true }, "crd": { "metadata": { diff --git a/data/traefik.json b/data/traefik.json index f765cf3..bc7e61b 100644 --- a/data/traefik.json +++ b/data/traefik.json @@ -7,17 +7,12 @@ "name": "io.traefik.v1alpha1.IngressRoute", "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": "IngressRouteSpec defines the desired state of IngressRoute.", "type": "object", + "description": "IngressRouteSpec defines the desired state of IngressRoute.", "required": [ "routes" ], @@ -112,7 +107,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -252,6 +255,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "IngressRoute is the CRD implementation of a Traefik HTTP Router.", @@ -597,17 +608,12 @@ "name": "us.containo.traefik.v1alpha1.IngressRoute", "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": "IngressRouteSpec defines the desired state of IngressRoute.", "type": "object", + "description": "IngressRouteSpec defines the desired state of IngressRoute.", "required": [ "routes" ], @@ -702,7 +708,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service. This can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -834,6 +848,14 @@ } } } + }, + "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" } }, "description": "IngressRoute is the CRD implementation of a Traefik HTTP Router.", @@ -1171,17 +1193,12 @@ "name": "io.traefik.v1alpha1.IngressRoute", "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": "IngressRouteSpec defines the desired state of IngressRoute.", "type": "object", + "description": "IngressRouteSpec defines the desired state of IngressRoute.", "required": [ "routes" ], @@ -1276,7 +1293,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -1416,6 +1441,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "IngressRoute is the CRD implementation of a Traefik HTTP Router.", @@ -1763,17 +1796,12 @@ "name": "io.traefik.v1alpha1.IngressRouteTCP", "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": "IngressRouteTCPSpec defines the desired state of IngressRouteTCP.", "type": "object", + "description": "IngressRouteTCPSpec defines the desired state of IngressRouteTCP.", "required": [ "routes" ], @@ -1849,7 +1877,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "proxyProtocol": { "description": "ProxyProtocol defines the PROXY protocol configuration.\nMore info: https://doc.traefik.io/traefik/v3.0/routing/services/#proxy-protocol", @@ -1961,6 +1997,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "IngressRouteTCP is the CRD implementation of a Traefik TCP Router.", @@ -2259,17 +2303,12 @@ "name": "us.containo.traefik.v1alpha1.IngressRouteTCP", "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": "IngressRouteTCPSpec defines the desired state of IngressRouteTCP.", "type": "object", + "description": "IngressRouteTCPSpec defines the desired state of IngressRouteTCP.", "required": [ "routes" ], @@ -2345,7 +2384,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service. This can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "proxyProtocol": { "description": "ProxyProtocol defines the PROXY protocol configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#proxy-protocol", @@ -2445,6 +2492,14 @@ } } } + }, + "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" } }, "description": "IngressRouteTCP is the CRD implementation of a Traefik TCP Router.", @@ -2731,17 +2786,12 @@ "name": "io.traefik.v1alpha1.IngressRouteTCP", "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": "IngressRouteTCPSpec defines the desired state of IngressRouteTCP.", "type": "object", + "description": "IngressRouteTCPSpec defines the desired state of IngressRouteTCP.", "required": [ "routes" ], @@ -2817,7 +2867,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "proxyProtocol": { "description": "ProxyProtocol defines the PROXY protocol configuration.\nMore info: https://doc.traefik.io/traefik/v3.0/routing/services/#proxy-protocol", @@ -2929,6 +2987,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "IngressRouteTCP is the CRD implementation of a Traefik TCP Router.", @@ -3229,17 +3295,12 @@ "name": "io.traefik.v1alpha1.IngressRouteUDP", "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": "IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.", "type": "object", + "description": "IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.", "required": [ "routes" ], @@ -3283,7 +3344,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "weight": { "description": "Weight defines the weight used when balancing requests between multiple Kubernetes Service.", @@ -3296,6 +3365,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "IngressRouteUDP is a CRD implementation of a Traefik UDP Router.", @@ -3463,17 +3540,12 @@ "name": "us.containo.traefik.v1alpha1.IngressRouteUDP", "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": "IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.", "type": "object", + "description": "IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.", "required": [ "routes" ], @@ -3517,7 +3589,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service. This can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "weight": { "description": "Weight defines the weight used when balancing requests between multiple Kubernetes Service.", @@ -3530,6 +3610,14 @@ } } } + }, + "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" } }, "description": "IngressRouteUDP is a CRD implementation of a Traefik UDP Router.", @@ -3697,17 +3785,12 @@ "name": "io.traefik.v1alpha1.IngressRouteUDP", "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": "IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.", "type": "object", + "description": "IngressRouteUDPSpec defines the desired state of a IngressRouteUDP.", "required": [ "routes" ], @@ -3751,7 +3834,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "weight": { "description": "Weight defines the weight used when balancing requests between multiple Kubernetes Service.", @@ -3764,6 +3855,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "IngressRouteUDP is a CRD implementation of a Traefik UDP Router.", @@ -3933,17 +4032,12 @@ "name": "io.traefik.v1alpha1.Middleware", "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": "MiddlewareSpec defines the desired state of a Middleware.", "type": "object", + "description": "MiddlewareSpec defines the desired state of a Middleware.", "properties": { "addPrefix": { "description": "AddPrefix holds the add prefix middleware configuration.\nThis middleware updates the path of a request before forwarding it.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/http/addprefix/", @@ -4040,7 +4134,15 @@ "properties": { "checkPeriod": { "description": "CheckPeriod is the interval between successive checks of the circuit breaker condition (when in standby state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "expression": { "description": "Expression is the condition that triggers the tripped state.", @@ -4048,11 +4150,27 @@ }, "fallbackDuration": { "description": "FallbackDuration is the duration for which the circuit breaker will wait before trying to recover (from a tripped state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "recoveryDuration": { "description": "RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4153,7 +4271,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -4697,7 +4823,15 @@ }, "period": { "description": "Period, in combination with Average, defines the actual maximum rate, such as:\nr = Average / Period. It defaults to a second.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "sourceCriterion": { "description": "SourceCriterion defines what criterion is used to group requests as originating from a common source.\nIf several strategies are defined at the same time, an error will be raised.\nIf none are set, the default is to use the request's remote address field (as an ipStrategy).", @@ -4802,7 +4936,15 @@ }, "initialInterval": { "description": "InitialInterval defines the first wait time in the exponential backoff series.\nThe maximum interval is calculated as twice the initialInterval.\nIf unspecified, requests will be retried immediately.\nThe value of initialInterval should be provided in seconds or as a valid duration format,\nsee https://pkg.go.dev/time#ParseDuration.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -4837,6 +4979,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Middleware is the CRD implementation of a Traefik Middleware.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/http/overview/", @@ -5881,17 +6031,12 @@ "name": "us.containo.traefik.v1alpha1.Middleware", "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": "MiddlewareSpec defines the desired state of a Middleware.", "type": "object", + "description": "MiddlewareSpec defines the desired state of a Middleware.", "properties": { "addPrefix": { "description": "AddPrefix holds the add prefix middleware configuration. This middleware updates the path of a request before forwarding it. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/addprefix/", @@ -5988,7 +6133,15 @@ "properties": { "checkPeriod": { "description": "CheckPeriod is the interval between successive checks of the circuit breaker condition (when in standby state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "expression": { "description": "Expression is the condition that triggers the tripped state.", @@ -5996,11 +6149,27 @@ }, "fallbackDuration": { "description": "FallbackDuration is the duration for which the circuit breaker will wait before trying to recover (from a tripped state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "recoveryDuration": { "description": "RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6094,7 +6263,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service. This can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -6579,9 +6756,17 @@ }, "period": { "description": "Period, in combination with Average, defines the actual maximum rate, such as: r = Average / Period. It defaults to a second.", - "x-kubernetes-int-or-string": true - }, - "sourceCriterion": { + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "sourceCriterion": { "description": "SourceCriterion defines what criterion is used to group requests as originating from a common source. If several strategies are defined at the same time, an error will be raised. If none are set, the default is to use the request's remote address field (as an ipStrategy).", "type": "object", "properties": { @@ -6684,7 +6869,15 @@ }, "initialInterval": { "description": "InitialInterval defines the first wait time in the exponential backoff series. The maximum interval is calculated as twice the initialInterval. If unspecified, requests will be retried immediately. The value of initialInterval should be provided in seconds or as a valid duration format, see https://pkg.go.dev/time#ParseDuration.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -6719,6 +6912,14 @@ } } } + }, + "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" } }, "description": "Middleware is the CRD implementation of a Traefik Middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/http/overview/", @@ -7697,17 +7898,12 @@ "name": "io.traefik.v1alpha1.Middleware", "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": "MiddlewareSpec defines the desired state of a Middleware.", "type": "object", + "description": "MiddlewareSpec defines the desired state of a Middleware.", "properties": { "addPrefix": { "description": "AddPrefix holds the add prefix middleware configuration.\nThis middleware updates the path of a request before forwarding it.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/http/addprefix/", @@ -7804,7 +8000,15 @@ "properties": { "checkPeriod": { "description": "CheckPeriod is the interval between successive checks of the circuit breaker condition (when in standby state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "expression": { "description": "Expression is the condition that triggers the tripped state.", @@ -7812,11 +8016,27 @@ }, "fallbackDuration": { "description": "FallbackDuration is the duration for which the circuit breaker will wait before trying to recover (from a tripped state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "recoveryDuration": { "description": "RecoveryDuration is the duration for which the circuit breaker will try to recover (as soon as it is in recovering state).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -7917,7 +8137,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -8461,7 +8689,15 @@ }, "period": { "description": "Period, in combination with Average, defines the actual maximum rate, such as:\nr = Average / Period. It defaults to a second.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "sourceCriterion": { "description": "SourceCriterion defines what criterion is used to group requests as originating from a common source.\nIf several strategies are defined at the same time, an error will be raised.\nIf none are set, the default is to use the request's remote address field (as an ipStrategy).", @@ -8566,7 +8802,15 @@ }, "initialInterval": { "description": "InitialInterval defines the first wait time in the exponential backoff series.\nThe maximum interval is calculated as twice the initialInterval.\nIf unspecified, requests will be retried immediately.\nThe value of initialInterval should be provided in seconds or as a valid duration format,\nsee https://pkg.go.dev/time#ParseDuration.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -8601,6 +8845,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "Middleware is the CRD implementation of a Traefik Middleware.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/http/overview/", @@ -9647,17 +9899,12 @@ "name": "io.traefik.v1alpha1.MiddlewareTCP", "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": "MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.", "type": "object", + "description": "MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.", "properties": { "inFlightConn": { "description": "InFlightConn defines the InFlightConn middleware configuration.", @@ -9697,6 +9944,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/overview/", @@ -9839,17 +10094,12 @@ "name": "us.containo.traefik.v1alpha1.MiddlewareTCP", "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": "MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.", "type": "object", + "description": "MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.", "properties": { "inFlightConn": { "description": "InFlightConn defines the InFlightConn middleware configuration.", @@ -9876,6 +10126,14 @@ } } } + }, + "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" } }, "description": "MiddlewareTCP is the CRD implementation of a Traefik TCP middleware. More info: https://doc.traefik.io/traefik/v2.10/middlewares/overview/", @@ -10005,17 +10263,12 @@ "name": "io.traefik.v1alpha1.MiddlewareTCP", "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": "MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.", "type": "object", + "description": "MiddlewareTCPSpec defines the desired state of a MiddlewareTCP.", "properties": { "inFlightConn": { "description": "InFlightConn defines the InFlightConn middleware configuration.", @@ -10055,6 +10308,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.\nMore info: https://doc.traefik.io/traefik/v3.0/middlewares/overview/", @@ -10199,17 +10460,12 @@ "name": "io.traefik.v1alpha1.ServersTransport", "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": "ServersTransportSpec defines the desired state of a ServersTransport.", "type": "object", + "description": "ServersTransportSpec defines the desired state of a ServersTransport.", "properties": { "certificatesSecrets": { "description": "CertificatesSecrets defines a list of secret storing client certificates for mTLS.", @@ -10228,23 +10484,63 @@ "properties": { "dialTimeout": { "description": "DialTimeout is the amount of time to wait until a connection to a backend server can be established.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "idleConnTimeout": { "description": "IdleConnTimeout is the maximum period for which an idle HTTP keep-alive connection will remain open before closing itself.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "pingTimeout": { "description": "PingTimeout is the timeout after which the HTTP/2 connection will be closed if a response to ping is not received.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "readIdleTimeout": { "description": "ReadIdleTimeout is the timeout after which a health check using ping frame will be carried out if no frame is received on the HTTP/2 connection.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseHeaderTimeout": { "description": "ResponseHeaderTimeout is the amount of time to wait for a server's response headers after fully writing the request (including its body, if any).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10289,6 +10585,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "ServersTransport is the CRD implementation of a ServersTransport.\nIf no serversTransport is specified, the default@internal will be used.\nThe default@internal serversTransport is created from the static configuration.\nMore info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_1", @@ -10511,17 +10815,12 @@ "name": "us.containo.traefik.v1alpha1.ServersTransport", "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": "ServersTransportSpec defines the desired state of a ServersTransport.", "type": "object", + "description": "ServersTransportSpec defines the desired state of a ServersTransport.", "properties": { "certificatesSecrets": { "description": "CertificatesSecrets defines a list of secret storing client certificates for mTLS.", @@ -10540,23 +10839,63 @@ "properties": { "dialTimeout": { "description": "DialTimeout is the amount of time to wait until a connection to a backend server can be established.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "idleConnTimeout": { "description": "IdleConnTimeout is the maximum period for which an idle HTTP keep-alive connection will remain open before closing itself.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "pingTimeout": { "description": "PingTimeout is the timeout after which the HTTP/2 connection will be closed if a response to ping is not received.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "readIdleTimeout": { "description": "ReadIdleTimeout is the timeout after which a health check using ping frame will be carried out if no frame is received on the HTTP/2 connection.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseHeaderTimeout": { "description": "ResponseHeaderTimeout is the amount of time to wait for a server's response headers after fully writing the request (including its body, if any).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10584,6 +10923,14 @@ "type": "string" } } + }, + "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" } }, "description": "ServersTransport is the CRD implementation of a ServersTransport. If no serversTransport is specified, the default@internal will be used. The default@internal serversTransport is created from the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#serverstransport_1", @@ -10789,17 +11136,12 @@ "name": "io.traefik.v1alpha1.ServersTransport", "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": "ServersTransportSpec defines the desired state of a ServersTransport.", "type": "object", + "description": "ServersTransportSpec defines the desired state of a ServersTransport.", "properties": { "certificatesSecrets": { "description": "CertificatesSecrets defines a list of secret storing client certificates for mTLS.", @@ -10818,23 +11160,63 @@ "properties": { "dialTimeout": { "description": "DialTimeout is the amount of time to wait until a connection to a backend server can be established.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "idleConnTimeout": { "description": "IdleConnTimeout is the maximum period for which an idle HTTP keep-alive connection will remain open before closing itself.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "pingTimeout": { "description": "PingTimeout is the timeout after which the HTTP/2 connection will be closed if a response to ping is not received.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "readIdleTimeout": { "description": "ReadIdleTimeout is the timeout after which a health check using ping frame will be carried out if no frame is received on the HTTP/2 connection.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseHeaderTimeout": { "description": "ResponseHeaderTimeout is the amount of time to wait for a server's response headers after fully writing the request (including its body, if any).", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] } } }, @@ -10879,6 +11261,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "ServersTransport is the CRD implementation of a ServersTransport.\nIf no serversTransport is specified, the default@internal will be used.\nThe default@internal serversTransport is created from the static configuration.\nMore info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_1", @@ -11103,17 +11493,12 @@ "name": "io.traefik.v1alpha1.TLSOption", "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": "TLSOptionSpec defines the desired state of a TLSOption.", "type": "object", + "description": "TLSOptionSpec defines the desired state of a TLSOption.", "properties": { "alpnProtocols": { "description": "ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference.\nMore info: https://doc.traefik.io/traefik/v3.0/https/tls/#alpn-protocols", @@ -11177,6 +11562,14 @@ "type": "boolean" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.\nMore info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options", @@ -11343,17 +11736,12 @@ "name": "us.containo.traefik.v1alpha1.TLSOption", "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": "TLSOptionSpec defines the desired state of a TLSOption.", "type": "object", + "description": "TLSOptionSpec defines the desired state of a TLSOption.", "properties": { "alpnProtocols": { "description": "ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#alpn-protocols", @@ -11417,6 +11805,14 @@ "type": "boolean" } } + }, + "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" } }, "description": "TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options", @@ -11583,17 +11979,12 @@ "name": "io.traefik.v1alpha1.TLSOption", "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": "TLSOptionSpec defines the desired state of a TLSOption.", "type": "object", + "description": "TLSOptionSpec defines the desired state of a TLSOption.", "properties": { "alpnProtocols": { "description": "ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference.\nMore info: https://doc.traefik.io/traefik/v3.0/https/tls/#alpn-protocols", @@ -11657,6 +12048,14 @@ "type": "boolean" } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.\nMore info: https://doc.traefik.io/traefik/v3.0/https/tls/#tls-options", @@ -11825,17 +12224,12 @@ "name": "io.traefik.v1alpha1.TLSStore", "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": "TLSStoreSpec defines the desired state of a TLSStore.", "type": "object", + "description": "TLSStoreSpec defines the desired state of a TLSStore.", "properties": { "certificates": { "description": "Certificates is a list of secret names, each secret holding a key/certificate pair to add to the store.", @@ -11895,6 +12289,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "TLSStore is the CRD implementation of a Traefik TLS Store.\nFor the time being, only the TLSStore named default is supported.\nThis means that you cannot have two stores that are named default in different Kubernetes namespaces.\nMore info: https://doc.traefik.io/traefik/v3.0/https/tls/#certificates-stores", @@ -12057,17 +12459,12 @@ "name": "us.containo.traefik.v1alpha1.TLSStore", "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": "TLSStoreSpec defines the desired state of a TLSStore.", "type": "object", + "description": "TLSStoreSpec defines the desired state of a TLSStore.", "properties": { "certificates": { "description": "Certificates is a list of secret names, each secret holding a key/certificate pair to add to the store.", @@ -12127,6 +12524,14 @@ } } } + }, + "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" } }, "description": "TLSStore is the CRD implementation of a Traefik TLS Store. For the time being, only the TLSStore named default is supported. This means that you cannot have two stores that are named default in different Kubernetes namespaces. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#certificates-stores", @@ -12289,17 +12694,12 @@ "name": "io.traefik.v1alpha1.TLSStore", "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": "TLSStoreSpec defines the desired state of a TLSStore.", "type": "object", + "description": "TLSStoreSpec defines the desired state of a TLSStore.", "properties": { "certificates": { "description": "Certificates is a list of secret names, each secret holding a key/certificate pair to add to the store.", @@ -12359,6 +12759,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "TLSStore is the CRD implementation of a Traefik TLS Store.\nFor the time being, only the TLSStore named default is supported.\nThis means that you cannot have two stores that are named default in different Kubernetes namespaces.\nMore info: https://doc.traefik.io/traefik/v3.0/https/tls/#certificates-stores", @@ -12523,17 +12931,12 @@ "name": "io.traefik.v1alpha1.TraefikService", "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": "TraefikServiceSpec defines the desired state of a TraefikService.", "type": "object", + "description": "TraefikServiceSpec defines the desired state of a TraefikService.", "properties": { "mirroring": { "description": "Mirroring defines the Mirroring service configuration.", @@ -12595,7 +12998,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -12676,7 +13087,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -12778,7 +13197,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -12876,6 +13303,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "TraefikService is the CRD implementation of a Traefik Service.\nTraefikService object allows to:\n- Apply weight to Services on load-balancing\n- Mirror traffic on services\nMore info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-traefikservice", @@ -13345,17 +13780,12 @@ "name": "us.containo.traefik.v1alpha1.TraefikService", "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": "TraefikServiceSpec defines the desired state of a TraefikService.", "type": "object", + "description": "TraefikServiceSpec defines the desired state of a TraefikService.", "properties": { "mirroring": { "description": "Mirroring defines the Mirroring service configuration.", @@ -13417,7 +13847,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service. This can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -13494,7 +13932,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service. This can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -13592,7 +14038,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service. This can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -13682,6 +14136,14 @@ } } } + }, + "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" } }, "description": "TraefikService is the CRD implementation of a Traefik Service. TraefikService object allows to: - Apply weight to Services on load-balancing - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice", @@ -14135,17 +14597,12 @@ "name": "io.traefik.v1alpha1.TraefikService", "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": "TraefikServiceSpec defines the desired state of a TraefikService.", "type": "object", + "description": "TraefikServiceSpec defines the desired state of a TraefikService.", "properties": { "mirroring": { "description": "Mirroring defines the Mirroring service configuration.", @@ -14207,7 +14664,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -14288,7 +14753,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -14390,7 +14863,15 @@ }, "port": { "description": "Port defines the port of a Kubernetes Service.\nThis can be a reference to a named port.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "responseForwarding": { "description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.", @@ -14488,6 +14969,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "TraefikService is the CRD implementation of a Traefik Service.\nTraefikService object allows to:\n- Apply weight to Services on load-balancing\n- Mirror traffic on services\nMore info: https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/#kind-traefikservice", @@ -14958,29 +15447,48 @@ "name": "io.traefik.v1alpha1.ServersTransportTCP", "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": "ServersTransportTCPSpec defines the desired state of a ServersTransportTCP.", "type": "object", + "description": "ServersTransportTCPSpec defines the desired state of a ServersTransportTCP.", "properties": { "dialKeepAlive": { "description": "DialKeepAlive is the interval between keep-alive probes for an active network connection. If zero, keep-alive probes are sent with a default value (currently 15 seconds), if supported by the protocol and operating system. Network protocols or operating systems that do not support keep-alives ignore this field. If negative, keep-alive probes are disabled.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "dialTimeout": { "description": "DialTimeout is the amount of time to wait until a connection to a backend server can be established.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "terminationDelay": { "description": "TerminationDelay defines the delay to wait before fully terminating the connection, after one connected peer has closed its writing capability.", - "x-kubernetes-int-or-string": true + "x-kubernetes-int-or-string": true, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] }, "tls": { "description": "TLS defines the TLS configuration", @@ -15032,6 +15540,14 @@ } } } + }, + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" } }, "description": "ServersTransportTCP is the CRD implementation of a TCPServersTransport.\nIf no tcpServersTransport is specified, a default one named default@internal will be used.\nThe default@internal tcpServersTransport can be configured in the static configuration.\nMore info: https://doc.traefik.io/traefik/v3.0/routing/services/#serverstransport_3", diff --git a/data/vynil.json b/data/vynil.json index 7fec067..ae2245b 100644 --- a/data/vynil.json +++ b/data/vynil.json @@ -6,30 +6,68 @@ "name": "fr.solidite.vynil.v1.Distrib", "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" - }, "spec": { - "description": "Distrib:\n\nDescribe a source of components distribution git repository", "type": "object", + "description": "Distrib:\n\nDescribe a source of components distribution git repository", "required": [ "schedule", "url" ], "properties": { "branch": { - "description": "Git branch" + "description": "Git branch", + "type": "string", + "nullable": true }, "insecure": { - "description": "Git clone URL" + "description": "Git clone URL", + "type": "boolean", + "nullable": true }, "login": { - "description": "Git authentication" + "description": "Git authentication", + "type": "object", + "properties": { + "git_credentials": { + "description": "a git-credentials store file (format: https://:@/)", + "type": "object", + "required": [ + "key", + "name" + ], + "properties": { + "key": { + "description": "Key of the secret containing the file", + "type": "string" + }, + "name": { + "description": "Name of the secret", + "type": "string" + } + }, + "nullable": true + }, + "ssh_key": { + "description": "SSH private key", + "type": "object", + "required": [ + "key", + "name" + ], + "properties": { + "key": { + "description": "Key of the secret containing the file", + "type": "string" + }, + "name": { + "description": "Name of the secret", + "type": "string" + } + }, + "nullable": true + } + }, + "nullable": true }, "schedule": { "description": "Actual cron-type expression that defines the interval of the updates.", @@ -42,11 +80,41 @@ } }, "status": { + "type": "object", "description": "The status object of `Distrib`", "required": [ "components", "last_updated" - ] + ], + "properties": { + "components": { + "description": "List of known category->components", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "errors": { + "description": "Set with the messages if any error occured", + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "last_updated": { + "description": "Last update date", + "type": "string", + "format": "date-time" + } + }, + "nullable": true + }, + "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" } }, "description": "Auto-generated derived type for DistribSpec via `CustomResource`", @@ -291,17 +359,9 @@ "name": "fr.solidite.vynil.v1.Install", "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" - }, "spec": { - "description": "Generate the Kubernetes wrapper struct `Install` from our Spec and Status struct\n\nThis provides a hook for generating the CRD yaml (in crdgen.rs) Maybe", "type": "object", + "description": "Generate the Kubernetes wrapper struct `Install` from our Spec and Status struct\n\nThis provides a hook for generating the CRD yaml (in crdgen.rs) Maybe", "required": [ "category", "component", @@ -309,7 +369,9 @@ ], "properties": { "auto_upgrade": { - "description": "Should we automatically upgrade the package" + "description": "Should we automatically upgrade the package", + "type": "boolean", + "nullable": true }, "category": { "description": "The category name", @@ -325,18 +387,69 @@ }, "options": { "description": "Parameters", - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object", + "nullable": true } } }, "status": { + "type": "object", "description": "The status object of `Install`", "required": [ "commit_id", "digest", "last_updated", "status" - ] + ], + "properties": { + "commit_id": { + "description": "component version applied", + "type": "string" + }, + "digest": { + "description": "Options digests", + "type": "string" + }, + "errors": { + "description": "Set with the messages if any error occured", + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "last_updated": { + "description": "Last update date", + "type": "string", + "format": "date-time" + }, + "plan": { + "description": "Currently planned changed, only set if planned is true", + "type": "object", + "nullable": true, + "x-kubernetes-preserve-unknown-fields": true + }, + "status": { + "description": "Current high-level status of the installation", + "type": "string" + }, + "tfstate": { + "description": "Current terraform status", + "type": "object", + "nullable": true, + "x-kubernetes-preserve-unknown-fields": true + } + }, + "nullable": true + }, + "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" } }, "description": "Auto-generated derived type for InstallSpec via `CustomResource`", diff --git a/data/whereabouts.json b/data/whereabouts.json index 256854e..4f257bb 100644 --- a/data/whereabouts.json +++ b/data/whereabouts.json @@ -6,17 +6,12 @@ "name": "io.cncf.cni.whereabouts.v1alpha1.IPPool", "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": "IPPoolSpec defines the desired state of IPPool", "type": "object", + "description": "IPPoolSpec defines the desired state of IPPool", "required": [ "allocations", "range" @@ -46,6 +41,14 @@ "type": "string" } } + }, + "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" } }, "description": "IPPool is the Schema for the ippools API", @@ -60,82 +63,7 @@ }, "crd": { "metadata": { - "name": "ippools.whereabouts.cni.cncf.io", - "uid": "3433f59f-7fe0-4250-b93f-e6d06c2f9a0d", - "resourceVersion": "144938264", - "generation": 1, - "creationTimestamp": "2024-03-19T16:00:11Z", - "annotations": { - "controller-gen.kubebuilder.io/version": "v0.4.1" - }, - "managedFields": [ - { - "manager": "kube-apiserver", - "operation": "Update", - "apiVersion": "apiextensions.k8s.io/v1", - "time": "2024-03-19T16:00:11Z", - "fieldsType": "FieldsV1", - "fieldsV1": { - "f:status": { - "f:acceptedNames": { - "f:kind": {}, - "f:listKind": {}, - "f:plural": {}, - "f:singular": {} - }, - "f:conditions": { - "k:{\"type\":\"Established\"}": { - ".": {}, - "f:lastTransitionTime": {}, - "f:message": {}, - "f:reason": {}, - "f:status": {}, - "f:type": {} - }, - "k:{\"type\":\"NamesAccepted\"}": { - ".": {}, - "f:lastTransitionTime": {}, - "f:message": {}, - "f:reason": {}, - "f:status": {}, - "f:type": {} - } - } - } - }, - "subresource": "status" - }, - { - "manager": "kubectl-create", - "operation": "Update", - "apiVersion": "apiextensions.k8s.io/v1", - "time": "2024-03-19T16:00:11Z", - "fieldsType": "FieldsV1", - "fieldsV1": { - "f:metadata": { - "f:annotations": { - ".": {}, - "f:controller-gen.kubebuilder.io/version": {} - } - }, - "f:spec": { - "f:conversion": { - ".": {}, - "f:strategy": {} - }, - "f:group": {}, - "f:names": { - "f:kind": {}, - "f:listKind": {}, - "f:plural": {}, - "f:singular": {} - }, - "f:scope": {}, - "f:versions": {} - } - } - } - ] + "name": "ippools.whereabouts.cni.cncf.io" }, "spec": { "group": "whereabouts.cni.cncf.io", @@ -205,27 +133,10 @@ } } ], - "conversion": { - "strategy": "None" - } + "conversion": {} }, "status": { - "conditions": [ - { - "type": "NamesAccepted", - "status": "True", - "lastTransitionTime": "2024-03-19T16:00:11Z", - "reason": "NoConflicts", - "message": "no conflicts found" - }, - { - "type": "Established", - "status": "True", - "lastTransitionTime": "2024-03-19T16:00:11Z", - "reason": "InitialNamesAccepted", - "message": "the initial names have been accepted" - } - ], + "conditions": [], "acceptedNames": { "plural": "ippools", "singular": "ippool", @@ -263,17 +174,12 @@ "name": "io.cncf.cni.whereabouts.v1alpha1.OverlappingRangeIPReservation", "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": "OverlappingRangeIPReservationSpec defines the desired state of OverlappingRangeIPReservation", "type": "object", + "description": "OverlappingRangeIPReservationSpec defines the desired state of OverlappingRangeIPReservation", "required": [ "containerid" ], @@ -285,6 +191,14 @@ "type": "string" } } + }, + "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" } }, "description": "OverlappingRangeIPReservation is the Schema for the OverlappingRangeIPReservations API", @@ -302,82 +216,7 @@ }, "crd": { "metadata": { - "name": "overlappingrangeipreservations.whereabouts.cni.cncf.io", - "uid": "bea5e7a7-b0af-4eae-b000-839e475df47f", - "resourceVersion": "144938565", - "generation": 1, - "creationTimestamp": "2024-03-19T16:00:16Z", - "annotations": { - "controller-gen.kubebuilder.io/version": "v0.4.1" - }, - "managedFields": [ - { - "manager": "kube-apiserver", - "operation": "Update", - "apiVersion": "apiextensions.k8s.io/v1", - "time": "2024-03-19T16:00:16Z", - "fieldsType": "FieldsV1", - "fieldsV1": { - "f:status": { - "f:acceptedNames": { - "f:kind": {}, - "f:listKind": {}, - "f:plural": {}, - "f:singular": {} - }, - "f:conditions": { - "k:{\"type\":\"Established\"}": { - ".": {}, - "f:lastTransitionTime": {}, - "f:message": {}, - "f:reason": {}, - "f:status": {}, - "f:type": {} - }, - "k:{\"type\":\"NamesAccepted\"}": { - ".": {}, - "f:lastTransitionTime": {}, - "f:message": {}, - "f:reason": {}, - "f:status": {}, - "f:type": {} - } - } - } - }, - "subresource": "status" - }, - { - "manager": "kubectl-create", - "operation": "Update", - "apiVersion": "apiextensions.k8s.io/v1", - "time": "2024-03-19T16:00:16Z", - "fieldsType": "FieldsV1", - "fieldsV1": { - "f:metadata": { - "f:annotations": { - ".": {}, - "f:controller-gen.kubebuilder.io/version": {} - } - }, - "f:spec": { - "f:conversion": { - ".": {}, - "f:strategy": {} - }, - "f:group": {}, - "f:names": { - "f:kind": {}, - "f:listKind": {}, - "f:plural": {}, - "f:singular": {} - }, - "f:scope": {}, - "f:versions": {} - } - } - } - ] + "name": "overlappingrangeipreservations.whereabouts.cni.cncf.io" }, "spec": { "group": "whereabouts.cni.cncf.io", @@ -432,27 +271,10 @@ } } ], - "conversion": { - "strategy": "None" - } + "conversion": {} }, "status": { - "conditions": [ - { - "type": "NamesAccepted", - "status": "True", - "lastTransitionTime": "2024-03-19T16:00:16Z", - "reason": "NoConflicts", - "message": "no conflicts found" - }, - { - "type": "Established", - "status": "True", - "lastTransitionTime": "2024-03-19T16:00:16Z", - "reason": "InitialNamesAccepted", - "message": "the initial names have been accepted" - } - ], + "conditions": [], "acceptedNames": { "plural": "overlappingrangeipreservations", "singular": "overlappingrangeipreservation", diff --git a/data/zalando.json b/data/zalando.json index 0d8176d..74bf93b 100644 --- a/data/zalando.json +++ b/data/zalando.json @@ -6,14 +6,6 @@ "name": "do.zalan.acid.v1.postgresql", "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" - }, "spec": { "type": "object", "required": [ @@ -42,14 +34,28 @@ "subPath": { "type": "string" }, - "targetContainers": {}, + "targetContainers": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, "volumeSource": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" } } } }, - "allowedSourceRanges": {}, + "allowedSourceRanges": { + "type": "array", + "items": { + "type": "string", + "pattern": "^(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\/(\\d|[1-2]\\d|3[0-2])$" + }, + "nullable": true + }, "clone": { "type": "object", "required": [ @@ -176,10 +182,30 @@ "enableShmVolume": { "type": "boolean" }, - "env": {}, - "initContainers": {}, + "env": { + "type": "array", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "nullable": true + }, + "initContainers": { + "type": "array", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "nullable": true + }, "init_containers": { - "description": "deprecated" + "description": "deprecated", + "type": "array", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "nullable": true }, "logicalBackupSchedule": { "type": "string", @@ -500,7 +526,14 @@ "type": "string" } }, - "sidecars": {}, + "sidecars": { + "type": "array", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "nullable": true + }, "spiloFSGroup": { "type": "integer" }, @@ -525,7 +558,24 @@ "standby_port": { "type": "string" } - } + }, + "oneOf": [ + { + "required": [ + "s3_wal_path" + ] + }, + { + "required": [ + "gs_wal_path" + ] + }, + { + "required": [ + "standby_host" + ] + } + ] }, "streams": { "type": "array", @@ -639,10 +689,58 @@ }, "users": { "type": "object", - "additionalProperties": {} + "additionalProperties": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "bypassrls", + "BYPASSRLS", + "nobypassrls", + "NOBYPASSRLS", + "createdb", + "CREATEDB", + "nocreatedb", + "NOCREATEDB", + "createrole", + "CREATEROLE", + "nocreaterole", + "NOCREATEROLE", + "inherit", + "INHERIT", + "noinherit", + "NOINHERIT", + "login", + "LOGIN", + "nologin", + "NOLOGIN", + "replication", + "REPLICATION", + "noreplication", + "NOREPLICATION", + "superuser", + "SUPERUSER", + "nosuperuser", + "NOSUPERUSER" + ] + }, + "nullable": true + } + }, + "usersWithInPlaceSecretRotation": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "usersWithSecretRotation": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true }, - "usersWithInPlaceSecretRotation": {}, - "usersWithSecretRotation": {}, "volume": { "type": "object", "required": [ @@ -686,7 +784,8 @@ } }, "matchLabels": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" } } }, @@ -712,6 +811,20 @@ "additionalProperties": { "type": "string" } + }, + "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", + "enum": [ + "acid.zalan.do/v1" + ] + }, + "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", + "enum": [ + "postgresql" + ] } }, "type": "object", @@ -1734,6 +1847,9 @@ "name": "org.zalando.v1.ClusterKopfPeering", "definition": { "properties": { + "spec": { + "type": "object" + }, "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" @@ -1743,7 +1859,8 @@ "type": "string" }, "status": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" } }, "type": "object", @@ -1806,9 +1923,12 @@ "apiKind": "ClusterKopfPeering", "apiVersion": "v1", "readProperties": { + "spec": "spec", "status": "status" }, - "writeProperties": {}, + "writeProperties": { + "spec": "spec" + }, "group": "zalando", "sub": "zalando", "listExcludes": [], @@ -1816,6 +1936,7 @@ "simpleExcludes": [], "gqlDefs": { "metadata": "metadata!", + "spec": "JSONObject", "status": "JSONObject" }, "namespaced": false @@ -1825,6 +1946,9 @@ "name": "org.zalando.v1.KopfPeering", "definition": { "properties": { + "spec": { + "type": "object" + }, "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" @@ -1834,7 +1958,8 @@ "type": "string" }, "status": { - "x-kubernetes-preserve-unknown-fields": true + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" } }, "type": "object", @@ -1897,9 +2022,12 @@ "apiKind": "KopfPeering", "apiVersion": "v1", "readProperties": { + "spec": "spec", "status": "status" }, - "writeProperties": {}, + "writeProperties": { + "spec": "spec" + }, "group": "zalando", "sub": "zalando", "listExcludes": [], @@ -1907,6 +2035,7 @@ "simpleExcludes": [], "gqlDefs": { "metadata": "metadata!", + "spec": "JSONObject", "status": "JSONObject" }, "namespaced": true diff --git a/front/components/core/MetadataView.vue b/front/components/core/MetadataView.vue index f8b7095..2e84fef 100644 --- a/front/components/core/MetadataView.vue +++ b/front/components/core/MetadataView.vue @@ -1,9 +1,8 @@